Google Analytics(分析)事件跟踪不会仅针对Chrome上的多个帐户触发

时间:2013-03-05 14:27:29

标签: google-chrome cross-browser google-analytics web-analytics event-tracking

我在使用Chrome浏览器时只显示 的Google Analytics事件跟踪存在问题,而且没有其他浏览器。

我在我的网站上触发了以下Google Analytics跟踪代码,点击了锚点链接:

_gaq.push(['_trackEvent', 'Basket Remove', product_name, product_code, product_price, false]);          
_gaq.push(['rollup._trackEvent', 'Basket Remove', product_name, product_code, product_price, false]);       

使用Web代理工具我可以看到第一个是触发,但第二个不是。对于点击是指向其他网页的链接的_trackEvent次点击,似乎就是这种情况,正如我所说的那样,Google Chrome中只有

在完成JavaScript执行之前,Chrome几乎已决定重定向到锚点中的链接。我没有在IE或FF中遇到这个问题。

我试过在电话之后和之间坚持setTimeout,但无济于事。

setTimeout('document.location="' + link.href + '"', 500);

2 个答案:

答案 0 :(得分:8)

问题是,当在当前窗口中加载新页面的请求时,Chrome(和其他浏览器)将取消任何待处理的图像请求。您可能很幸运第一个_trackEvent请求被记录,因为在第二个_trackEvent期间进行了额外的处理。

向链接添加延迟时,需要确保链接的默认操作不会执行 - 否则默认操作会在setTimeout函数发生之前跟随链接。

以下代码检查链接是否在新窗口中打开 - 如果没有,它会在链接后延迟150ms:

function track(link) {
  _gaq.push(['_trackEvent', 'Basket Remove', product_name, product_code, product_price, false]);          
  _gaq.push(['rollup._trackEvent', 'Basket Remove', product_name, product_code, product_price, false]);
  if ('_blank' == link.target) return true;
  var url = link.href;
  setTimeout(function(){ document.location = url; }, 150);
  return false;
}

<a href="someURL" onclick="return track(this);">ClickMe</a>

答案 1 :(得分:1)

对于那些到达这里并且建议的答案不适合他们的人:

我所做的是将跟踪代码(即_gaq.push()置于setTimeout函数中,并将1500毫秒作为参数。

我使用analytics.js,我的代码如下:

setTimeout(function(){ga('send', 'event', 'click' , 'label',2);}, 1500);

基本上,我不会通过跟踪来干扰我网站的自然使用。而是在用户已经发生的事情之后报告跟踪。