用document.title=“xxx”动态修改title,在ios的微信下面不生效

G_Mvv
  • 93

js修改title,在ios的微信下面不生效,有什么解决办法吗?

回复
阅读 32.2k
7 个回答
savokiss
  • 6.2k
✓ 已被采纳
        //需要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:微信前端开发有哪些坑或者黑魔法

poorbug
  • 8

@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);
霜后枫叶12
  • 23

开始的时候不写title 标签,需要的时候直接 document.title 就可以了

kflh59
  • 1
新手上路,请多包涵

这个方法钉钉可以,但是QQ还是不行

点不着蚊香
  • 560

为了使 Safari 极简和尽可能地显示网页内容,Safari 8 在只打开一个页面时,竟然连网页标题都省略不显示了。但别怕,还是有办法把它找回来的。
在只有一个网页时,你只需要开启菜单中的「View -> Show Tab Bar」,就会像以前一样,即使只有一个网页,也显示标签栏了,而且只需要操作一次,Safari 会记住你的选择。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
宣传栏