首页 > 网站建设 > 好搜360搜索自动收录js代码报错自动收录JS优化解决浏览器报错
2018
12-25

好搜360搜索自动收录js代码报错自动收录JS优化解决浏览器报错

免费支持本站

今天用Chrome浏览器审查元素测试网站的打开速度的时候发现网站有两处错误,分别是百度和360搜索的自动收录代码引起的。虽然就算报错也不影响什么,但是身为一个强迫症看着就是不怎么舒服。

大概就是下面这样的代码,首先说下怎么解决360搜索也就是好搜自动收录代码报错的问题,额。。百度的还没找到解决办法。

好搜360搜索自动收录js代码报错自动收录JS优化解决浏览器报错

方法如下:首先去360站长平台,找到属于自己的自动收录js代码:

<script>(function(){
var src = (document.location.protocol == "http:") ? "http://js.passport.qihucdn.com/11.0.1.js?YOU_KEY":"https://jspassport.ssl.qhimg.com/11.0.1.js?YOU_KEY";
document.write('<script src="' + src + '" id="sozz"><\/script>');
})();
</script>

以上代码是我的,其中“YOU_KEY”替换成你自己的KEY值。每个人的都不一样,别弄错了。必须到好搜站长平台自动收录里面找到自己的,不可以通用的。

由于 360 自动收录默认的 js 代码使用 document.write, 所以在 chrome 会直接报错。

document.write 被阻止的原因, document write 会阻塞页面 parser。下面是Chrome给出的解释

If your provider gives you a snippet that includes the document.write(), it might be possible for you to add an async attribute to the script element, or for you to add the script elements with DOM API's like document.appendChild() or parentNode.insertBefore() much like Google Analytics does.

翻译出来就是

如果你的供应商给你一个代码片段,其中包括document . write(),有可能给你一个异步属性添加到脚本元素,或者你与DOM API添加脚本元素就像document.appendChild()或parentNode.insertBefore()就像谷歌分析。

修改成 document.body.appendChild

<!-- 360 自动收录 -->
<script>(function(){
    var s3=document.createElement('script');
    s3.id='sozz';
    s3.src='http://js.passport.qihucdn.com/11.0.1.js?YOU_KEY';
    document.body.appendChild(s3);
  })();
</script>

用的时候如果你的网站是HTTPS站需要把代码里的s3.src='http://js.passport.qihucdn.com/11.0.1.js?YOU_KEY';替换为s3.src='https://jspassport.ssl.qhimg.com/11.0.1.js?YOU_KEY';这个在360搜索的自动收录代码里面也做了是HTTP站还是https站分别提交的网址不同。

360搜索之所以又引用一个文件,我想是因为以后更新或者修改方便。

事情还没有完,其加载的 js 里是这样一段代码,还是包含了 document.write ...

document.write('<script charset="utf-8" src="http://s8.qhres.com/static/ab77b6ea7f3fbf79.js"></script>')

360 的程序师真是不行啊。。。我打开了ab77b6ea7f3fbf79.js 的代码,如下:

(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",s=document.getElementById("sozz"),o=s.src.split("?")[1],u=t(o),a=new Image;r&&(i+="?url="+encodeURIComponent(r)),o&&(i+="&sid="+o),u&&(i+="&token="+u),o&&(a.src=i)}})(window);

逻辑很简单,就是加载一个 gif 图片,后面缀上当前 URL 和网站标识 (第一段代码里的 YOU_KEY)所以,解决方法就是把下面这段代码里的 YOU_KEY 替换成自己的,然后贴到网页里就可以了。

<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 = "YOU_KEY",
      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>

用的时候复制压缩的就行,把其中的“YOU_KEY”替换成自己的KEN值就行了。

OK大功告成,只是,百度搜索自动收录代码的报错警告没有解决,等等吧,解决后第一时间放出来!

路由器交流群

支付宝打赏微信打赏