3

我对 Google Analytics 事件跟踪有一个问题,该问题在 Chrome 上出现,在其他浏览器上没有。

我在我的网站上触发了以下 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点击的情况,其中点击是指向另一个页面的链接,正如我所说的那样,在谷歌浏览器中很明显。

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

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

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

2 回答 2

8

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

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

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

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>
于 2013-03-05T20:50:37.927 回答
1

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

我所做的是放置跟踪代码(即_gaq.push()setTimeout函数内,并给出 1500ms 作为参数。

我和我一起工作analytics.js,我的代码如下所示:

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

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

于 2014-01-13T08:47:05.800 回答