基于Vue的SPA动态修改页面title的方法(推荐)


Posted in Javascript onJanuary 02, 2018

最近基于VUE做个SPA手机端web发现动态修改页面标题通过document.title=xxxx 来修改着实蛋疼,而且在IOS的微信端据说没效果。百度发现要针对IOS的微信做点额外的操作,即:创建一个隐藏的Iframe,然后随便加载一个图片文件,然后加载完成移除,这样就能修改页面title了。网上有几种方案:

1,App.Vue里面设置title属性,然后页面title去绑定,所有子组件修改标题就通过 this.$root.data.title=xxxxx;去修改

缺点:App.Vue默认的el只是body的一个DIV,这样干需要绑定整个html

2,通过自定义指令实现

Vue.directive('title', {
 inserted: function (el, binding) {
 document.title = el.innerText
 el.remove()
 }
})

调用方法: <div v-title>标题内容</div>

优点:这样自定义程度较大(暂且不讨论IOS微信端是否能修改成功)

缺点:无法满足某些JS方法中修改页面标题的需求,例如页面为一个websocket的页面,收到消息要动态显示页面标题这时候频繁去修改div绑定的text并不恰当

针对网上查到的上面两种方法,我进行了合并,利用vue的插件实现SPA的页面标题修改:

var plugin={};
plugin.install=function(Vue,options){
 Vue.prototype.$title=function(title){
  document.title=title;
  var iframe=document.createElement("iframe");
  iframe.style.display='none';
  iframe.setAttribute('src','/e.png');
  var loadedCallback=()=>{
   iframe.removeEventListener('load',loadedCallback);
   document.body.removeChild(iframe);
  };
  iframe.addEventListener('load',loadedCallback);
  document.body.appendChild(iframe);
 };
};
module.exports=plugin;

调用方法: this.$title('xxxxxx'); 当然你可以替换为一个绑定的变量,然后watch进行实时调整。

ps:Vue Spa切换页面时更改标题

在Vue组件化开发过程中,因为是单页面开发,但是有时候需要页面的title根据情况改变,于是上网查了一下,各种说法花(wo)里(kan)胡(bu)哨(dong), 于是想到一个黑科技 documet.title="xxx";

随便创建一个项目,在独立的模块中,created在钩子函数启动之后document.title='标题'; 但是据说在IOS的微信下是无效的,虽然用苹果机测试过有用,但是想到这样会影响我的代码洁癖。

<script>
export default {
  data(){
    return{
    }
  },
  created(){
    document.title="首页"
  },
}
</script>

于是在github上找到一个好用的东西 vue-wechat-title

通过 npm install vue-wechat-title  安装

引入需要的vue-router与页面需要的组件之后

const router = new VueRouter({
  mode: 'history',
  routes:[
    {
    name: 'index',
    path: '/',
    meta: {
        title: '首页'
     },
     component: index
    },
   {
     name: 'root',
     path: '/root', 
     meta: {
        title: '肉特'
    },
    component: root
    }  
 ]
});
Vue.use(require('vue-wechat-title')); //实例化参数

在组件中顶部添加一段 <div v-wechat-title="$route.meta.title"></div>

即可实现改变title效果。

Javascript 相关文章推荐
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
Three.js源码阅读笔记(光照部分)
Dec 27 Javascript
js实现jquery的offset()方法实例
Jan 10 Javascript
jQuery+ajax实现动态执行脚本的方法
Jan 27 Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 Javascript
webstorm添加vue.js支持的方法教程
Jul 05 Javascript
JS自定义函数实现时间戳转换成date的方法示例
Aug 27 Javascript
JavaScript判断输入是否为数字类型的方法总结
Sep 28 Javascript
使用vue-infinite-scroll实现无限滚动效果
Jun 22 Javascript
JavaScript数组去重的几种方法
Apr 07 Javascript
vue ref如何获取子组件属性值
Mar 31 Vue.js
vue如何清除浏览器历史栈
May 25 Vue.js
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
Jan 02 #Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 #Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 #Javascript
基于jquery.page.js实现分页效果
Jan 01 #jQuery
jquery实现企业定位式导航效果
Jan 01 #jQuery
jquery实现楼层滚动效果
Jan 01 #jQuery
jquery实现左右轮播切换效果
Jan 01 #jQuery
You might like
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
许愿墙中用到的函数
2006/10/07 Javascript
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
深入理解Ajax的get和post请求
2016/06/02 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python使用chardet判断字符编码
2015/05/09 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
Python request操作步骤及代码实例
2020/04/13 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
PyTorch-GPU加速实例
2020/06/23 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
创业计划书的主要内容有哪些
2014/01/29 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
保护环境建议书400字
2014/05/13 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP