【问题标题】:Google Analytics Event Tracking not firing for multiple accounts on Chrome ONLYGoogle Analytics Event Tracking 仅针对 Chrome 上的多个帐户不触发
【发布时间】:2013-02-20 00:02:28
【问题描述】:

我有一个关于 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 点击的情况,其中点击是指向另一个页面的链接,正如我所说,在 Google Chrome 中可见。

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

我尝试在通话之后和通话之间粘贴setTimeout,但无济于事。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 嗨 Leon,您似乎正在那里使用基于您的 ga 函数的 Universal Analytics - 我说的对吗?我曾经/正在使用传统的 Google Analytics,所以也许这是答案对您不起作用的一个因素。
    • 是的,你是对的 :),但我认为值得一提,因为 GA 转向了 analytics.js
    【解决方案2】:

    问题在于,当请求在当前窗口中加载新页面时,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>
    

    【讨论】:

    • 绝对正确,这正是我所需要的。我尝试了几个不同版本的 setTimeout 用法,但这个很有效!
    • 如果这个答案对你没有帮助,就像它对我没有帮助一样,看看下面是什么最终帮助了我。干杯!
    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多