Vue动态修改网页标题的方法及遇到问题


Posted in Javascript onJune 09, 2019

业务需求,进入页面的时候,网页有个默认标题,加载的网页内容不同时,标题需要变更. 例:功能授权,功能授权(张三).

Vue下有很多的方式去修改网页标题,这里总结下解决此问题的几种方案:

一、最笨方案

结合业务直接在Vue生命周期函数 created 和 mounted 中,给 document.title赋值。

<script>
import axios from 'axios'
export default {
 created () {
 document.title = '功能授权'
 },
 mounted() {
 axios.get('***').then((d)=>{
 document.title = '功能授权('+ d.Name + ')'
 })
 }
}
</script>

二、普通方案,使用Vue-Router的beforeEach拦截

项目中使用了Vue Router,在路由文件 index.js 中给需要的路由添加 title。

routes: [{
 path: '/',
 name: 'home',
 component: () => import('@/pages/home/index'),
 meta:{
 keepAlive: true
 }
 },
 {
 path: '/person/auth,
 name: 'personAuth',
 component: () => import('@/pages/person/auth),
 meta:{
 title: '功能授权',
 keepAlive: false
 }
 }
 ]

在路由的beforeEach 拦截器里处理

router.beforeEach((to, from, next) => {
 /* 路由发生变化修改页面title */
 if (to.meta.title) {
 document.title = to.meta.title
 }
})

如果想在页面上依据加载的内容不同再变更title时,请参考方式一的 mounted函数处理逻辑.

三、优雅方案,使用Vue 自定义指令(directive)

如前文所提,页面获取不同数据状态时,需要展示不同的标题。那么我们可以结合vue 自定义指令(directive)可更优雅的处理网页标题的动态更新。

自定义指令 v-web-title的定义

export default {
 inserted: function (el, binding) {
 const { value } = binding
 if (el.dataset.title) { // 方式1,可以给标签的data-title的属性赋值
 document.title = el.dataset.title
 } else if (value && value.title) { // 方式2,指令传参
 document.title = value.title
 }
 },
 update (el, binding, vnode, oldVnode) {
 const { value } = binding
 if (el.dataset.title) {
 document.title = el.dataset.title
 } else if (value && value.title) {
 document.title = value.title
 }
 }
}

在页面上使用v-web-title有两种方式

1.给标签 data-title属性赋值

<template>
 <div v-web-title
 :data-title="textTitle">
</template>
<script>
import axios from 'axios'
export default {
 data(){
 return {
 textTitle:'功能授权'
 }
 },
 mounted () {
 axios.get('***').then((d) => {
 this.textTitle = '功能授权(' + d.Name + ')'
 })
 }
}
</script>

2.给指令传参

<template>
 <div v-web-title="{title:textTitle}">
</template>
<script>
import axios from 'axios'
export default {
 data(){
 return {
 textTitle:'功能授权'
 }
 },
 mounted () {
 axios.get('***').then((d) => {
 this.textTitle = '功能授权(' + d.Name + ')'
 })
 }
}
</script>

四、参考

1. vue单页面应用中动态修改title 主要介绍使用vue-weachat-title 组件

2.vue.js自定义指令详解 主要介绍自定义指令的钩子函数,以及指令传参等

总结

以上所述是小编给大家介绍的Vue动态修改网页标题的方法及遇到问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
网页里控制图片大小的相关代码
Jun 13 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
Node.js的Koa实现JWT用户认证方法
May 05 Javascript
vue element项目引入icon图标的方法
Jun 06 Javascript
解决vue axios的封装 请求状态的错误提示问题
Sep 25 Javascript
js canvas画布实现高斯模糊效果
Nov 27 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
layer.js open 隐藏滚动条的例子
Sep 05 Javascript
JS中箭头函数与this的写法和理解
Jan 14 Javascript
详解Node.js异步处理的各种写法
Jun 09 #Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 #Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 #Javascript
微信小程序与webview交互实现支付功能
Jun 07 #Javascript
在微信小程序中使用vant的方法
Jun 07 #Javascript
微信小程序实现折线图的示例代码
Jun 07 #Javascript
微信小程序如何刷新当前界面的实现方法
Jun 07 #Javascript
You might like
PHP安全配置
2006/10/09 PHP
php的正则处理函数总结分析
2008/06/20 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python 文件操作实现代码
2009/10/07 Python
浅谈Python中数据解析
2015/05/05 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
一些Unix笔试题和面试题
2013/01/22 面试题
优秀毕业生求职信
2014/06/05 职场文书
依法行政工作汇报
2014/10/28 职场文书
郭明义电影观后感
2015/06/08 职场文书
员工离职证明范本
2015/06/12 职场文书