谷歌分析后执行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秒,但这不是真正的解决方案。
任何帮助如何正确实施?
现在对这个问题没有很好的解决方案。您可以做的最好做法是添加超时以延迟重定向。目前没有_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
});
)相同的行为请小心,如果有人开启了AdBlock或Ghostery,它将无法工作如果您想为AdBlock用户执行位置更改,请使用setTimeout而不将其推送到ga数组在一个函数中。 – DanFromGermany 2015-12-08 12:33:08
见http://*.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