簡體   English   中英

Google Analytics(分析)跟蹤代碼中的雙腳本標簽

[英]Double script tags in Google Analytics tracking code

好奇心比其他任何問題都重要...

Google指示如下添加分析跟蹤代碼:

<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>
<script type="text/javascript">
   try{
      var pageTracker = _gat._getTracker("UA-xxxxxx-x");
      pageTracker._trackPageview();
   } catch(err) {}
</script>

我想知道這里的一些JS專家可以告訴我為什么他們將其分成兩個腳本標簽,而不是將其全部粘貼在一個腳本標簽中。 我知道頂部可以放在正文標簽的頂部,底部可以放在body標簽之前,以確保在跟蹤頁面之前就已加載該頁面,但是我想知道是否還有其他內容。 任何知道的人都可能知道如何將代碼分成兩個標簽。

我只是問,這是因為它來自Goog,並且已被數百萬個網站使用...

謝謝

這是一致的跨瀏覽器,它需要確保document.write()在下一個腳本塊運行之前粘貼其生成的標簽,因此結果如下所示:

<script src='http://www.google-analytics.com/ga.js' type='text/javascript'></script>
<script type="text/javascript">
   try{
      var pageTracker = _gat._getTracker("UA-xxxxxx-x");
      pageTracker._trackPageview();
   } catch(err) {}
</script>

如果未在2個腳本中執行此操作,則_gat在第二個腳本塊中將是未定義的,因為ga.js尚未加載...但是,作為該腳本之前的腳本塊,頁面將等待執行內部的代碼最后一塊,在應有的情況下使其全部正常工作。 基本上,瀏覽器按順序執行腳本塊,谷歌利用這一事實在需要加載腳本時加載腳本……這是在使用腳本之前。

如果我不得不猜測,那是因為document.write(unescape(...)); 他們動態地包含另一個JS文件的行。 為什么他們不知道動態地加載那個。 我想這與您是否運行https或http有關。

如果是一個文件,我懷疑ga.js文件是否會及時加載以運行pageTracker代碼。 _gat不存在,並且您會得到一個錯誤,而不是能夠實際使用Google Analytics(分析)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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