基于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 相关文章推荐
将string解析为json的几种方式小结
Nov 11 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
javaScript对文字按照拼音排序实现代码
Dec 27 Javascript
JavaScript ParseFloat()方法
Dec 18 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
js实现飞机大战小游戏
Aug 26 Javascript
解决vue scoped scss 无效的问题
Sep 04 Javascript
swiper实现导航滚动效果
Dec 13 Javascript
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
在php MYSQL中插入当前时间
2008/04/06 PHP
php下将XML转换为数组
2010/01/01 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
php之curl设置超时实例
2014/11/03 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
php服务器的系统详解
2019/10/12 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
2017/01/20 Javascript
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
药品采购员岗位职责
2014/02/08 职场文书
班组长安全工作职责
2014/07/15 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
环卫处个人工作总结
2015/03/04 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js
Python必备技巧之字符数据操作详解
2022/03/23 Python
Python OpenCV超详细讲解基本功能
2022/04/02 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
springboot用户数据修改的详细实现
2022/04/06 Java/Android