360 自動收錄功能的 js 代碼報錯問題

360 自動收錄功能的 js 代碼報錯問題

因爲 360 自動收錄默認的 js 代碼使用 document.write, 因此在 chrome 會直接報錯。修改爲 document.body.appendChildhtml

<!-- 360 自動收錄 -->
    <script>(function(){
        var s3=document.createElement('script');
        s3.id='sozz';

        var curProtocol = window.location.protocol.split(':')[0];
        if (curProtocol === 'https') {
            s3.src='https://jspassport.ssl.qhimg.com/11.0.1.js?YOUR_KEY';
        }else{
            s3.src='http://js.passport.qihucdn.com/11.0.1.js?YOUR_KEY';
        }
        document.body.appendChild(s3);
    })();
    </script>

緣由參考 避免三方 js 文件被重複加載chrome

事情尚未完,其加載的 js 裏是這樣一段代碼,仍是包含了 document.write ...app

document.write('<script charset="utf-8" src="https://s.ssl.qhres.com/ssl/ab77b6ea7f3fbf79.js"></script>')

360 的程序師真是不行啊。。。jsp

我手動獲取了 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 和網站標識 (第一端代碼裏的 YOUR_KEY)url

因爲 360 自動收錄默認的 js 代碼使用 document.write, 因此在 chrome 會直接報錯。解決方法spa

因此,解決方法就是把下面這段代碼裏的 YOUR_KEY 替換成本身的,而後貼到網頁裏就能夠了。code

<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="YOUR_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>

原文來自:360 自動收錄功能的 js 代碼報錯問題cdn

相關文章
相關標籤/搜索