苹果手机 浏览器中修改vue单页面的title

最近在弄一个h5的项目,使用vue的框架,但是遇到一个小麻烦,页面的title如何修改,经过查询:

/* 路由发生变化修改页面title */
router.beforeEach((to, from, next) => {
  if (to.meta.title) {
    document.title = to.meta.title
    // 如果是 iOS 设备,则使用如下 hack 的写法实现页面标题的更新
    // if (navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
    //   const hackIframe = document.createElement('iframe');
    //   hackIframe.style.display = 'none';
    //   hackIframe.src = '/static/html/fixIosTitle.html?r=' + Math.random();
    //   document.body.appendChild(hackIframe);
    //   setTimeout(_ => {
    //     document.body.removeChild(hackIframe)
    //   }, 300)
    // }
    // var iframe = document.createElement('iframe');
    // iframe.style.visibility = 'hidden'; 
    // iframe.style.width = '1px'; 
    // iframe.style.height = '1px'; 
    // iframe.onload = function () { 
    //     setTimeout(function () {
    //         document.body.removeChild(iframe); 
    //     }, 0); 
    // }; 
    // document.body.appendChild(iframe);
  }
  next()
});

如上代码,测算如下
安卓手机,微信+浏览器,都ok
苹果手机,微信浏览器ok,自带的safari浏览器,显示的是ip地址

阅读 4.7k
2 个回答

之前用的代码跟你差不多,可以试一下

var $body = $('body')
var $iframe = $('<iframe src="/favicon.ico" width="1px" height="1px" style="display:none;"></iframe>')
$iframe.on('load',function() {
    setTimeout(function() {
        $iframe.off('load').remove();
    }, 0)
}).appendTo($body)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题