博客报错 A Parser-blocking, cross-origin script, is invoked via document.write.

今天在例行巡检博客的时候发现 console 报错了:

2016-10-05_20-04-17_01

错误内容是:

A Parser-blocking, cross-origin script, https://s95.cnzz.com/z_stat.php?id=1257684520, is invoked via document.write. This may be blocked by the browser if the device has poor network connectivity.

A Parser-blocking, cross-origin script, https://c.cnzz.com/core.php?web_id=1257684520&t=z, is invoked via document.write. This may be blocked by the browser if the device has poor network connectivity.

第一次遇到这种问题,用 Safari 打开后发现并没有报错。考虑到之前更新了 Chrome 遂怀疑是 Chrome 的问题,Google 搜了一下搜到了这篇 http://stackoverflow.com/questions/39610829/a-parser-blocking-cross-origin-script-is-invoked-via-document-write-how-to-ci 在其中第一个答案处找到了 Google 的文档

浏览了一下,大意就是在页面渲染完成后就不能使用 document.write 方法了,从 Chrome 53 开始就会报以上的错误。文章还给出了一系列的解决方法。

仔细查了博客中的相关代码,发现时只加载了 z_stat.php 这个资源,很明显第二个报错是 z_stat.php 中的代码执行的,本想着将 document.write 换个方法写,现在换成别的写法也不能解决报错,只有先忍着,等 CNZZ 修改他们的代码了。


顺便随手给 CNZZ 发了一封邮件,希望能有回复。


10月9日收到了CNZZ回复的邮件:

您好,针对chrome新版对对第三方js的阻止的问题,目前依赖于JS的所有产品都会受此影响。

目前解决办法是建议您更换我们的异步加载代码,请参考附件。

但需要注意:使用异步加载代码后统计的数据会比普通JS代码数据少,

但目前如果更不换异步加载代码,在新版chrome的阻止下数据是直接统计不到的。

请您知悉,感谢您对U-WEB的支持!

打开附件 统计代码异步加载教程.docx ,按照教程提供的方法将js代码修改成异步加载后即可,需要提醒的是附件中的代码存在中英文符号的问题,所以可以复制下面的代码:

至此问题解决~