基于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下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 Javascript
中文输入法不触发onkeyup事件的解决办法
Jul 09 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
Mar 25 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
node.js使用redis储存session的方法
Sep 26 Javascript
javascript验证form表单数据的案例详解
Mar 25 Javascript
js/jQuery实现全选效果
Jun 17 jQuery
解决vue中的无限循环问题
Jul 27 Javascript
前端监听websocket消息并实时弹出(实例代码)
Nov 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
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
php全排列递归算法代码
2012/10/09 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
vue2项目使用sass的示例代码
2017/06/28 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
电大毕业自我鉴定
2014/02/03 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
Python之基础函数案例详解
2021/08/30 Python
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫