Google Analytics:_gaq.push()是否具有阻止功能?

时间:2011-04-07 18:57:52

标签: javascript google-analytics

我要做的是在向Google Analytics发送事件后立即将用户重定向到下一页:

_gaq.push(['_trackEvent', 'xxx' ...]);
window.location = 'some url ...';

上面的代码设法注册事件,因为我可以在GA报告中看到它们。但是我怀疑某些事件已丢失,因为浏览器会在轨道像素加载之前将用户重定向到新页

我的问题是:

  1. 在事件成功到达Google的服务器之前,_gaq.push()会阻止吗?
  2. 如果没有,达到我需要的最佳方法是什么?
  3. 谢谢!

4 个答案:

答案 0 :(得分:1)

这是基于一些快速研究的观察结果。该功能是Google Analytic的异步API的一部分,因此它不应该阻止任何内容,否则,它不是异步的。 :)

通过混淆的ga.js,您可以看到跟踪可能被称为onbeforeunload,当您离开页面时会触发。

跟踪像素是否完全加载并不重要,它是一个火灾&忘记。只要请求已启动并到达Google的服务器,它就会被跟踪。响应(在这种情况下,像素图像)是副产品。

答案 1 :(得分:1)

Google有一个support page表示您可能希望在致电_gac.push后添加延迟,但是他们声称这是为了让Google AnalyticsJava JavaScript有机会加载。他们并没有说要确保发送请求。

  

首先,将出站点击延迟几分之一。

     

用户几乎不会注意到此延迟,但它会为浏览器提供更多时间加载跟踪代码。如果没有这种方法,用户可以在加载跟踪代码之前点击出站链接,在这种情况下,不会记录事件。

我没有检查@ pixelfreak处理onbeforeunload的声明,但似乎这就是他们所做的。

答案 2 :(得分:0)

也许你可以尝试这种方法,但我还没试过

_gaq.push(['_trackEvent', 'xxx' ...]);
_gaq.push(function(){location.reload()});

答案 3 :(得分:0)

只需使用1秒延迟。像这样:

_gaq.push(['_trackEvent', 'xxx' ...]);
setTimeout(function(){window.location = 'some_url'}, 1000);