我正在使用Google Analytics并在分析请求完成后进行重定向.
我正在使用此代码:
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年了,从那时起谷歌分析已经走过了漫长的道路.
现在有一个正确的方法来做到这一点:
var _gaq = _gaq || []; _gaq.push(['_setAccount','UA-XXXXXXX-X']); _gaq.push(['_set','hitCallback',function(){ window.location.href = newUrl; }]); _gaq.push(['_trackPageview']);
如果您使用analytics.js迁移到Universal Analytics,则等价物将是:
ga('create','UA-XXXXXXX-X') ga('send','pageview',{ 'hitCallback': function() { window.location.href = newUrl; } });
编辑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',{ 'hitCallback': myCode });