js修改title,在ios的微信下面不生效,有什么解决办法吗?
认证高级PHP讲师
//需要jQuery var $body = $('body'); document.title = 'title'; // hack在微信等webview中无法修改document.title的情况 var $iframe = $('<iframe src="/favicon.ico"></iframe>'); $iframe.on('load',function() { setTimeout(function() { $iframe.off('load').remove(); }, 0); }).appendTo($body);
楼主可以试试这个hack,我没有apple没法测试
refer:微信前端开发有哪些坑或者黑魔法
为了使 Safari 极简和尽可能地显示网页内容,Safari 8 在只打开一个页面时,竟然连网页标题都省略不显示了。但别怕,还是有办法把它找回来的。 在只有一个网页时,你只需要开启菜单中的「View -> Show Tab Bar」,就会像以前一样,即使只有一个网页,也显示标签栏了,而且只需要操作一次,Safari 会记住你的选择。
@savokiss 的方法是可以实现的,但是如果是在请求的回调中加入这段代码,是不行的
简单调查了一下,如果把代码放入setTimeout中,就无效了
setTimeout(function(){ //需要jQuery var $body = $('body'); document.title = 'test'; // hack在微信等webview中无法修改document.title的情况 var $iframe = $('<iframe src="/favicon.ico"></iframe>'); $iframe.on('load',function() { setTimeout(function() { $iframe.off('load').remove(); }, 0); }).appendTo($body); },0);
js 改动title的话大部分是因为需要从后台获取吧,那这个方法肯定是用不了,我找时间研究一下,再来补充
补充:
//以下代码可以解决以上问题,不依赖jq setTimeout(function(){ //利用iframe的onload事件刷新页面 document.title = 'test'; 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); },0);
开始的时候不写title 标签,需要的时候直接 document.title 就可以了
在微信6.5.3版本后用iframe的方式就不好使了。
6.5.3
iframe
所以在一些SPA中,使用框架的路由用这种方式不起作用了。
我是用location.href来进行页面的强刷,路由还是定义好路由的规则,但是通过location.href去接管页面的跳转。好使。
location.href
封装了一个只在IOS的状态下处理的方法:
setDocumentTitle = function(title) { document.title = title; if (/ip(hone|od|ad)/i.test(navigator.userAgent)) { var i = document.createElement('iframe'); i.src = '/favicon.ico'; i.style.display = 'none'; i.onload = function() { setTimeout(function(){ i.remove(); }, 9) } document.body.appendChild(i); } }
楼主可以试试这个hack,我没有apple没法测试
refer:微信前端开发有哪些坑或者黑魔法
@savokiss 的方法是可以实现的,但是如果是在请求的回调中加入这段代码,是不行的
简单调查了一下,如果把代码放入setTimeout中,就无效了
js 改动title的话大部分是因为需要从后台获取吧,那这个方法肯定是用不了,我找时间研究一下,再来补充
补充:
开始的时候不写title 标签,需要的时候直接 document.title 就可以了
在微信
6.5.3
版本后用iframe
的方式就不好使了。所以在一些SPA中,使用框架的路由用这种方式不起作用了。
我是用
location.href
来进行页面的强刷,路由还是定义好路由的规则,但是通过location.href
去接管页面的跳转。好使。封装了一个只在IOS的状态下处理的方法: