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 相关文章推荐
jquery实现的可隐藏重现的靠边悬浮层实例代码
May 27 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
Dec 17 Javascript
Javascript浅谈之引用类型
Dec 18 Javascript
javascript中直接引用Microsoft的COM生成Word
Jan 20 Javascript
JavaScript实现的encode64加密算法实例分析
Apr 15 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
javascript实现炫酷的拖动分页
May 11 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
Oct 10 Javascript
JavaScript数组去重的两种方法推荐
Apr 05 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
Feb 19 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
Jun 17 Javascript
vue+eslint+vscode配置教程
Aug 09 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
PHP中的extract的作用分析
2008/04/09 PHP
php 删除记录实现代码
2009/03/12 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
如何实现浏览器上的右键菜单
2006/07/10 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
Python实现基于POS算法的区块链
2018/08/07 Python
对pandas处理json数据的方法详解
2019/02/08 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
团支书的期末学习总结自我评价
2013/11/01 职场文书
大学四年的个人自我评价
2014/01/14 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers