360搜尋: 自動收錄功能 js 提交程式碼報錯問題
360搜尋: 自動收錄功能 js 提交程式碼報錯問題
由於360 自動收錄預設的 js 程式碼使用 document.write
, 所以在 chrome 會直接報錯。修改成 document.body.appendChild
<!-- <a href="https://www.miaoroom.com/tag/360" data-toggle="tooltip" title="檢視更多關於 360 的文章" target="_blank">360</a> 自動收錄 --> <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 檔案被重複載入
事情還沒有完,其載入的 js 裡是這樣一段程式碼,還是包含了 document.write
...
document.write('<script charset="utf-8" src="https://s.ssl.qhres.com/ssl/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.<a href="https://www.miaoroom.com/tag/360" data-toggle="tooltip" title="檢視更多關於 360 的文章" target="_blank">360</a>.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)
由於 360 自動收錄預設的 js 程式碼使用 document.write
, 所以在 chrome 會直接報錯。解決方法
所以,解決方法就是把下面這段程式碼裡的 YOUR\_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="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>