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 相关文章推荐
用js自动判断浏览器分辨率的代码
Jan 28 Javascript
基于MooTools的很有创意的滚动条时钟动画
Nov 14 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
Feb 27 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
Jquery 实现grid绑定模板
Jan 28 Javascript
简介JavaScript中substring()方法的使用
Jun 06 Javascript
jquery实现Ctrl+Enter提交表单的方法
Jul 21 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
Jan 22 Javascript
给vue项目添加ESLint的详细步骤
Sep 29 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
Jan 07 Javascript
js实现移动端图片滑块验证功能
Sep 29 Javascript
微信小程序实现列表左右滑动
Nov 19 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
星际实力自我测试
2020/03/04 星际争霸
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
浅析vue深复制
2018/01/29 Javascript
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
Django 再谈一谈json序列化
2020/03/16 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
Delphi工程师笔试题
2013/09/21 面试题
银行工作检查书范文
2014/01/31 职场文书
社区消防工作实施方案
2014/03/21 职场文书
党支部承诺书范文
2014/03/28 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
深入理解python协程
2021/06/15 Python
MySQL学习之基础操作总结
2022/03/19 MySQL