谷歌分析后执行JavaScript

问题描述:

我在使用Google Analytics并在分析请求完成后执行重定向。谷歌分析后执行JavaScript

我使用这个代码:

var _gaq = _gaq || []; 

_gaq.push(['_setAccount', 'UA-12345678-1']); 

_gaq.push(['_trackPageview']); 

_gaq.push(function() { 
    window.location.replace("myRedirectToUri"); 
}); 

这是不正确执行。

重定向在Firefox上正确完成(作为分析回调),但未在其他浏览器(IE,Chrome,Safari)上执行,因此我失去了分析数据。

目前我已经设置超时1秒,但这不是真正的解决方案。

任何帮助如何正确实施?

+0

见http://*.com/questions/8147065/google-analytics-async-events-tracking-callback – 2012-02-16 14:33:41

+0

你有没有试过用'window.location.href = url'取代'窗口。 location.replace(url)'? – Eduardo 2012-02-16 18:38:11

+0

与window.location.href = url :( – Amir 2012-02-17 08:56:37

现在对这个问题没有很好的解决方案。您可以做的最好做法是添加超时以延迟重定向。目前没有_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 
}); 
+1

)相同的行为请小心,如果有人开启了AdBlock或Ghostery,它将无法工作如果您想为AdBlock用户执行位置更改,请使用setTimeout而不将其推送到ga数组在一个函数中。 – DanFromGermany 2015-12-08 12:33:08