2012-11-15 52 views
3

我歌廳_gaq未定義錯誤在IE7和IE8「_gaq是未定義」在IE7和IE8谷歌分析錯誤

我的劇本是波紋管

<script type="text/javascript"> 
    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-XXXXX']); 
    _gaq.push(['_setDomainName', 'yyy.com']); 
    _gaq.push(['_trackPageview']); 
    (function() { 
     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js?'; 
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 
</script> 

我能爲_gaq指定默認值根據您的回覆我的評論?Refer this link

+1

發生了什麼(設置默認值)var _gaq = _gaq || [];要麼採用當前_gaq,要麼創建一個空數組。你的代碼一定有其他錯誤。你可以再發布一些嗎? – Asken

+0

你在哪一行得到_gaq是未定義的? var _gaq = _gaq || [];應該阻止這一點。 – SoonDead

+1

同意上面的評論,錯誤不是來自這段代碼,更可能來自其他引用它的其他人。這個腳本是在HTML的''部分定義的嗎?在GA的舊版本中,您可以在關閉「'標籤之前放置腳本。如果它仍然存在,那很可能是問題所在。只要腳本標記已經在'_gaq'變量被引用之前被讀取和處理,你就不應該得到這個錯誤(甚至從IE7和IE8 !!)。 –

回答

7

,在這個問題的答案是

谷歌Analyt ics移動到幾年前處理事件的一種新的更現代的方式,允許瀏覽器加載完整頁面,而無需等待來自GA服務器的響應。而過去,您已經被引導將<script>由谷歌提供的代碼片段放在頁面的結尾附近(就在關閉的body標籤之前),現在您應該在HTML的<head>部分的某處添加代碼。

新腳本的工作原理是將一個JavaScript變量_gaq定義爲一個數組,它被視爲一個隊列。瀏覽量,事件和其他你想跟蹤的內容被推送到陣列上,這是有效的。當有時間時,GA代碼將檢查數組的內容並將其彈出,處理對GA服務器的請求,直到數組爲空。

_gaq變量的副作用是腳本標記在被引用之前必須在HTML中,否則您將得到JS錯誤_gaq is undefined

例如as documented here in the Google Analytics event tracking guide您可能希望當用戶播放視頻在您的網站是這樣認識:

<a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a> 

通知的參考變量_gaq這裏。如果沒有定義,你會得到錯誤。

簡短回答:將異步JavaScript片段放入HTML的<head>