微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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
});

原文地址:https://www.jb51.cc/js/150666.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐