簡體   English   中英

為什么Google會覆蓋他們的Google Analytics跟蹤代碼?

[英]Why does Google unescape their Analytics tracking code?

剛下載我的JavaScript訓練輪。

為什么谷歌選擇unescapedocument.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM