JavaScript在谷歌分析后执行

我正在使用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
});

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...