現在對這個問題沒有很好的解決方案。您可以做的最好做法是添加超時以延遲重定向。目前沒有_trackPageview的回調。當它返回時,意味着它開始了跟蹤,但在__utm.gif請求完成之前,它已成功註冊了綜合瀏覽量,這並不是保證。
1秒超時可能太多。我通常保持200-400毫秒的超時時間。
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_trackPageview']);
_gaq.push(function() {
setTimeout(function(){
window.location.href = newUrl;
}, 200);
});
編輯:
它過2次年以來我本來最初張貼了這個答案,因爲那麼谷歌Analytics(分析)已經走過了很長的路要走。
現在有這樣做有道:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_set','hitCallback',function(){
window.location.href = newUrl;
}]);
_gaq.push(['_trackPageview']);
如果你已經使用analytics.js遷移到通用Analytics(分析)相當於是:
ga('create', 'UA-XXXXXXX-X')
ga('send', 'pageview', {
'hitCallback': function() {
window.location.href = newUrl;
}
});
EDIT 2
以下是更正確的方法,即使Google Analytics代碼被阻止或篡改,也要確保您的代碼得到執行通過擴展或adBlocker。
var t = undefined;
var myCode = function(){
window.clearTimeout(t);
t = undefined;
window.location.href = newUrl;
};
t = setTimeout(myCode, 3000);
ga('create', 'UA-XXXXXXX-X')
ga('send', 'pageview', {
'hitCallback': myCode
});
見http://stackoverflow.com/questions/8147065/google-analytics-async-events-tracking-callback – 2012-02-16 14:33:41
你有沒有試過用'window.location.href = url'取代'窗口。 location.replace(url)'? – Eduardo 2012-02-16 18:38:11
與window.location.href = url :( – Amir 2012-02-17 08:56:37