基于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 相关文章推荐
js 学习笔记(三)
Dec 29 Javascript
jQuery总体架构的理解分析
Mar 07 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
Jan 15 Javascript
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
Javascript 实现放大镜效果实例详解
Dec 03 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
Mar 03 Javascript
详解JS异步加载的三种方式
Mar 07 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
Feb 06 Javascript
Ant Design Pro 下实现文件下载的实现代码
Dec 03 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
Jul 27 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
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
pandas 时间格式转换的实现
2019/07/06 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
python取均匀不重复的随机数方式
2019/11/27 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
python实现logistic分类算法代码
2020/02/28 Python
python实现数字炸弹游戏程序
2020/07/17 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
LINUX下线程,GDI类的解释
2012/04/17 面试题
财务会计毕业生个人求职信
2014/02/03 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
红旗渠导游词
2015/02/09 职场文书
赞助商致辞
2015/07/30 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang