Javascript Google Analytics:_gaq.push()是一个阻塞函数吗?

Javascript Google Analytics:_gaq.push()是一个阻塞函数吗?,javascript,google-analytics,Javascript,Google Analytics,我试图做的是在向Google Analytics发送事件后立即将用户重定向到下一页: _gaq.push(['_trackEvent', 'xxx' ...]); window.location = 'some url ...'; 上面的代码管理注册事件,因为我可以在GA报告中看到它们。但是,我怀疑某些事件丢失了,因为浏览器在加载轨迹像素之前将用户重定向到新页面 我的问题是: 在事件成功到达Google的服务器之前,_gaq.push()会阻止吗 如果没有,那么实现我所需要的最好方法是什么 谢

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

_gaq.push(['_trackEvent', 'xxx' ...]);
window.location = 'some url ...';
上面的代码管理注册事件,因为我可以在GA报告中看到它们。但是,我怀疑某些事件丢失了,因为浏览器在加载轨迹像素之前将用户重定向到新页面

我的问题是:

  • 在事件成功到达Google的服务器之前,_gaq.push()会阻止吗
  • 如果没有,那么实现我所需要的最好方法是什么

  • 谢谢

    这是我根据一些快速研究得出的观察结果。该函数是Google Analytical异步API的一部分,因此它不应该阻止任何内容,否则它就不是异步的。:)

    翻开模糊的ga.js,您可以看到跟踪可能被称为onbeforeunload,当您离开页面时会触发


    如果跟踪像素完全加载,这真的不重要,这是一个火&忘记。只要请求被启动并到达谷歌的服务器,它就会被跟踪。响应(在本例中为像素图像)是副产品。

    也许您可以尝试此方法,但我没有尝试过

    _gaq.push(['_trackEvent', 'xxx' ...]);
    _gaq.push(function(){location.reload()});
    
    谷歌有一份声明称,你可能希望在调用
    \u gac.push
    后增加延迟,但他们声称这是为了给谷歌分析JavaScript一个加载的机会。他们没有说这是为了确保请求被发送

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

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


    我还没有检查@pixelfreak声称在卸载之前处理
    ,但他们似乎就是这么做的。

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

    _gaq.push(['_trackEvent', 'xxx' ...]);
    setTimeout(function(){window.location = 'some_url'}, 1000);
    
    相关:嗯,没有?1) “push”是原生javascript,这里唯一特定于google的东西是添加数据的数组的名称。图像请求不是一个副产品,而是发送给谷歌的数据。这就是为什么谷歌建议在重定向之前加上一个超时,或者使用通用分析,使用点击回调。