谷歌分析后执行JavaScript

谷歌分析后执行JavaScript,javascript,google-analytics,Javascript,Google Analytics,我正在使用谷歌分析,并在分析请求完成后重定向 我正在使用以下代码: var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-12345678-1']); _gaq.push(['_trackPageview']); _gaq.push(function () { window.location.replace("myRedirectToUri"); }); 这没有正确执行 重定向在Firefox上是正确的(作为分析回调),但在其

我正在使用谷歌分析,并在分析请求完成后重定向

我正在使用以下代码:

var _gaq = _gaq || [];

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

_gaq.push(['_trackPageview']);

_gaq.push(function () {
     window.location.replace("myRedirectToUri");
});
这没有正确执行

重定向在Firefox上是正确的(作为分析回调),但在其他浏览器(如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);
});
编辑:

从我最初发布这个答案到现在已经有两年了,从那时起,谷歌分析已经取得了长足的进步

现在有一个正确的方法可以做到这一点:

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

这里有一个更合适的方法来确保你的代码执行,即使谷歌分析代码被扩展或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
});

请参阅您是否尝试使用
window.location.href=url
而不是
window.location.replace(url)
?与window.location.href=url的行为相同:(请小心,如果有人打开了AdBlock或Ghostery,则此操作将不起作用。如果要为AdBlock用户执行位置更改,请使用setTimeout,而不要将其推送到函数中的ga数组中。