基于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 相关文章推荐
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
Feb 03 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
angularJS 中$scope方法使用指南
Feb 09 Javascript
jQuery使用fadein方法实现渐出效果实例
Mar 27 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
Dec 29 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
easyUI combobox实现联动效果
Jan 17 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
Sep 02 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
Sep 12 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
Aug 03 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
Nov 16 Javascript
在JavaScript中如何使用宏详解
May 06 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
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
Python线程同步的实现代码
2018/10/03 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
Python基于Faker假数据构造库
2020/11/30 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
建龙钢铁面试总结
2014/04/15 面试题
事务机电主管工作职责
2014/02/25 职场文书
老公出轨后的保证书
2015/05/08 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书