基于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 相关文章推荐
浅析Javascript使用include/require
Nov 13 Javascript
Extjs根据条件设置表格某行背景色示例
Jul 23 Javascript
js星星评分效果
Jul 24 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
Jan 09 Javascript
详解ECharts使用心得总结
Dec 06 Javascript
将angular.js项目整合到.net mvc中的方法详解
Jun 29 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
Jan 08 Javascript
Vue中this.$router.push参数获取方法
Feb 27 Javascript
vue+element-ui+axios实现图片上传
Aug 20 Javascript
javascript随机变色实例代码
Oct 15 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 Javascript
js 实现Material UI点击涟漪效果示例
Sep 23 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
PHP return语句的另一个作用
2014/07/30 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
python求众数问题实例
2014/09/26 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
Django实现表单验证
2018/09/08 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
django实现支付宝支付实例讲解
2019/10/17 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
python 用struct模块解决黏包问题
2020/11/07 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
Europcar意大利:汽车租赁
2019/07/07 全球购物
项目经理聘任书
2014/03/29 职场文书
倡议书范文
2014/04/16 职场文书
项目建议书范文
2014/05/12 职场文书
公司委托书范本5篇
2014/09/20 职场文书
监察建议书
2015/02/04 职场文书
公司财务部岗位职责
2015/04/14 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript