2012-05-24 91 views
0

我使用了舊的Google Analytics代碼,並有一堆鏈接將pageTracker功能附加到它們,以便它們也計算每次點擊。那麼現在,我升級到最新的GA,pageTracker不再工作,這是好的,但鏈接在IE中顯示JS錯誤,因爲pageTracker未定義。我不想通過所有鏈接並刪除所有pageTracker onclicks,但只是想找到一種方法來取消那些,所以他們不會導致錯誤。忽略onclick以防止JS錯誤

我試過var pageTracker =「」;和var pageTracker = null;但仍然有一個未定義的錯誤。這是一個鏈接的樣子。

<p><a href="/gotowebsite/" onclick="javascript: pageTracker._trackPageview('/GoToTheWebsiteLink');">Go to the website</a><br /> 

這裏是在JSFiddle中。當您單擊IE中的鏈接時,您會看到JS錯誤持續一段時間直到下一頁加載。 http://jsfiddle.net/Fvp9F/

回答

0

只是嘗試添加一個假pageTracker對象像這樣(當然它做的更好,只有當它以前沒有定義)

if (!pageTracker) { /* if pageTracker is not defined */ 
    var pageTracker = { 
     "_trackPageview" : function() { 

     }    
    } 
} 

例如小提琴:http://jsfiddle.net/Fvp9F/6/

+0

我仍然得到一個錯誤就這一個了。我正在運行IE8。嗯,我想知道是什麼給了。 – zen

0

你是非常接近,只需要把它變成一個空白對象:

var pageTracker = {_trackPageview: function(){}}; 
+0

很酷。由於某種原因,我仍然得到JS未定義的錯誤。 http://jsfiddle.net/Fvp9F/5/ – zen

0

甚至比添加af ake/blank pageTracker對象,您應該能夠從_gat全局獲取pageTracker,並且仍然可以使用舊的跟蹤代碼。

pageTracker = _gat._getTrackerByName(); 

的一個問題是,你需要確保異步跟蹤代碼加載後獲得跟蹤_gaq.push()還允許函數對象 - 添加以下到您的異步跟蹤代碼應該工作:

_gaq.push(function() { pageTracker = _gat._getTracker(); }); 
+0

有趣的想法。但我使用的是一種全球性的方式,它會自動附加onclicks到每個鏈接,所以我不需要這個。雖然很高興知道! – zen

+0

http://jsfiddle.net/Fvp9F/5/錯誤是因爲你已經爲javascript指定了onLoad,所以它被封裝在一個函數中,這使'pageTracker'成爲本地函數。要麼擺脫'var'強制'pageTracker'爲全局,並且/或者改變爲'no wrap(head)' – mike

+0

啊哈。現在你說出來了,這很有道理。再次感謝! – zen