360自动推送js报错的解决方案

当我们按360站长要求加入了自动推送的js代码后,chrome浏览器会报错,因为360自动收录默认的 js 代码使用document.write,为了安全,在动态js中使用document.write是不被允许的。

如何解决问题?

解决方法就是将360自动推送代码直接添加到源码中,而不是通过360的js动态添加,代码如下:

<script>
(function (e) {
   function t(e) {
     var t = location.href, n = t.split("").reverse(), r = e.split(""), i = [];
     for (var s = 0, o = 16; s < o; s++)i.push(r[s] + (n[s] || ""));
       return i.join("")
   }
   var n = /([http|https]:\/\/[a-zA-Z0-9_.]+.so.com)/gi, r = e.location.href;
   if (r && !n.test(r) && window.navigator.appName) {
     var i = "//s.360.cn/so/zz.gif", o = 'token', u = t(o), a = new Image;
     r && (i += "?url=" + encodeURIComponent(r)), o && (i += "&sid=" + o), u && (i += "&token=" + u), o && (a.src = i)
   }
 })(window);
</script>
注意,代码中的token是你网站自动推送的密钥,每个网站是不同的,如下红框内部分:

代码的添加位置依然保持为360文档中标识的位置,也就是<head></head>间。

为什么这样能解决问题?

以上的解决方案并非自创的,我们只是把360的自动推送代码从动态js直接搬到了源码中,请求自动推送的接口:https://jspassport.ssl.qhimg.com/11.0.1.js?token,可以看到其中的js地址为:https://s.ssl.qhres.com/ssl/ab77b6ea7f3fbf79.js,然后请求这个js地址就会得到我们上面解决方案中的代码。


本文为@艺文笔记原创文章,转载请注明出处:https://www.xuwenyan.com/archives/465,非常感谢!
上一篇:  已是最后文章