[英]Why does Google unescape their Analytics tracking code?
剛下載我的JavaScript訓練輪。
為什么谷歌選擇unescape
的document.write
的低於1線?
他們為什么不這樣寫呢? 某些較舊的瀏覽器兼容性可能需要unescape
嗎?
document.write('<script src="'
+ gaJsHost
+ 'google-analytics.com/ga.js" type="text/javascript"></script>');
作為參考,整個Google Analytics跟蹤代碼如下所示:
第1部分:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol)
? "https://ssl."
: "http://www."
);
document.write(unescape("%3Cscript src='"
+ gaJsHost
+ "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"
));
</script>
第2部分:
<script type="text/javascript">
try
{
var pageTracker = _gat._getTracker("UA-0000000-0");
pageTracker._trackPageview();
}
catch(err){}
</script>
我理解其余代碼的作用,只是對unescape部分感到好奇。
編輯
底線是, unescape
是必需的。 投票結束這個問題因為它是重復的(見答案標記正確)。
這意味着代碼將以XML / XHTML和HTML工作,而不必弄亂CDATA
請參閱: https : //stackoverflow.com/questions/1224670/what-is-the-advantage-of-using-unescape-on-document-write-to-load-javascript
我的理解是,當發現</script
>甚至在引號"</script>"
,解析器錯誤地理解了它,它到達腳本的末尾,所以它們不能像"</script>"
谷歌希望確保在google-analytics.com/*.js
加載之前設置像pageTracker
這樣的變量,因此unescaping %3Cscript
和%3E%3C/script%3E
只是他們的方式。
只是我的2美分,對不起如果我說錯了。
直接在不使用“<”或“>”字符的情況下直接寫入文檔意味着您不必以文檔格式轉義它們,這些格式可以解釋這些字體。 否則,正確的解釋是<script>
標簽在字符串內部開始,這不是所希望的。
另請注意,您提出的替代代碼中存在錯誤(您在src
屬性結束后錯過了引號)。
我覺得:
document.wrIte('<script src="'"
也將失敗HTML驗證。 有趣的是,它也打破了這個評論框上的預覽:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.