移除你的document.write

  • 1,651 views
  • 阅读模式
移除你的document.write
HTTPS后在Chromedocument.write报错警告

最近注意到,站点强制HTTPS后在Chrome下老是报警告,排除了不少http导致的跨域提醒,然后又出现了document.write报错警告,包括cnzz统计百度收录,分享等都有该问题,于是想办法解决了一下。

该警告是这样的:

“A parser-blocking,cross site (i.e. different eTLD+1) script, https://s22.cnzz.com/z_stat.php?id=XXXX.js,is invoked via document.write. The network request for this script MAY beblocked by the browser in this or a future page load due to poor network connectivity.”

Chrome之所以出现该警告,主要是从加载速度上考虑的,特别是在2g情况下,Chrome会直接忽略document.wirte的加载;基于这一原因,我们可以想到解决办法,改为异步加载:

// 将代码中的xxxxxxx替换成你的id即可
<span id='cnzz_stat_icon_xxxxxxx'></span>
<script>
    var cnzz_s_tag =document.createElement('script');
    cnzz_s_tag.type ='text/javascript';
    cnzz_s_tag.async =true;
    cnzz_s_tag.charset= 'utf-8';
    cnzz_s_tag.src ='https://s96.cnzz.com/z_stat.php?id=xxxxxxx&show=pic';
    var root_scnzz =document.getElementsByTagName('script')[0];
    root_scnzz.parentNode.insertBefore(cnzz_s_tag,root_scnzz);
</script>

同理,百度hm代码也可以修改:

// 下面代码中xxxxxxx改为你的id
<script>
var _hmt = _hmt || [];
(function() {
    var hm = document.createElement("script");
    hm.src = "https://hm.baidu.com/hm.js?xxxxxxx";
    var s = document.getElementsByTagName("script")[0]; 
    s.parentNode.insertBefore(hm, s);
})();
</script>

个人博客: IT老五    简书:ThinkinLiu

源创不易,允许转载,来源勿删,多谢合作

移除你的document.write
IT老五(it-lao5):关注公众号,一起源创,一起学习!

weinxin
我的微信公众号
微信扫一扫关注公众号,不定时更新
IT老五
  • 本文由 发表于 2020-06-28 10:04:03
  • 转载请务必保留本文链接:https://itlao5.com/3191.html
评论  0  访客  0
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定