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 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
javascript获得CheckBoxList选中的数量
Oct 27 Javascript
url 编码 js url传参中文乱码解决方案
Apr 11 Javascript
javascript 弹出层组件(升级版)
May 12 Javascript
图片上传判断及预览脚本的效果实例
Aug 07 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
Feb 07 Javascript
jquery实现的横向二级导航效果代码
Aug 26 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
Mar 01 Javascript
Javascript的无new构建实例详解
May 15 Javascript
原生JS实现不断变化的标签
May 22 Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 Javascript
js实现鼠标拖拽div左右滑动
Jan 15 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
vue this.reload 方法 配置
2018/09/12 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
numpy中索引和切片详解
2017/12/15 Python
python绘制中国大陆人口热力图
2018/11/07 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
sort命令的作用和用法
2012/11/04 面试题
小学生期末评语大全
2014/04/21 职场文书
如何写股份合作协议书
2014/09/11 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
培养联系人考察意见
2015/06/01 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL