【问题标题】:ga or _gaq.push for Google Analytics event tracking?ga 或 _gaq.push 用于 Google Analytics 事件跟踪?
【发布时间】:2013-09-12 20:51:38
【问题描述】:

在通过条件检查是否存在 cookie 后,我想跟踪网站页面上按钮的 onclick

非常简单,但哪种语法效果最好?

我研究了 GA 事件跟踪语法的 gagaq_push 前缀(如果我错了,请见谅)但它们看起来很相似?

_gaq.push

<script type="text/javascript">
jQuery(document).ready(function () {
    if (jQuery.cookie('entry_winagrand_cookie') !== null) {
        jQuery('notregisterbtn').on('click', function () {
            _gaq.push(['_trackEvent', 'QR_Win_A_Grand', 'Clicked through to Register']);
        });
    }
});
</script>

ga

<script type="text/javascript">
jQuery(document).ready(function () {
     if (jQuery.cookie('entry_winagrand_cookie') !== null) {
         jQuery('notregisterbtn').on('click', function () {
             ga('send', 'event', 'button', 'click', 'QR_Win_A_Grand', 'Clicked_through_to_register');
         });
     }
});
</script>

【问题讨论】:

    标签: jquery events google-analytics tracking


    【解决方案1】:

    如果你使用ga.js(“传统”异步代码),你必须使用_gaq.push。如果您使用analytics.js,则需要使用 ga 发送。这些方法不可互换,它们属于 Google Analytics(分析)跟踪代码的两个不同版本。

    到现在 (2017) 有一个新的代码版本 (gtag.js),所以如果您使用它,您既不使用 ga 也不使用 _gaq.push,而是关注 the migration guidelines 将您的代码更新到最新版本版本(或者您非常明智地开始使用 Google 跟踪代码管理器)。

    【讨论】:

    • 谢谢!太糟糕了,这在任何地方都没有明确提及。我想知道为什么几个小时都没有发生事件跟踪!
    • 文档中明确提到。现在至少
    • @Martin,说句公道话,这个问题和答案是两年前的 :-)
    【解决方案2】:

    如果你需要跟踪不同的事件,我会创建一个函数,这样你的代码会更干净。

    analytics.js

    ga.js

    function TrackEventGA(Category, Action, Label, Value) {
        "use strict";
        if (typeof (_gaq) !== "undefined") {
            _gaq.push(['_trackEvent', Category, Action, Label, Value]);
        } else if (typeof (ga) !== "undefined") {
            ga('send', 'event', Category, Action, Label, Value);
        }
    }
    TrackEventGA('QR_Win_A_Grand', 'Clicked_through_to_register');
    

    【讨论】:

      【解决方案3】:

      如果您的站点上同时运行了 analytics.js 和 ga.js(在 analytics.js 仍处于测试阶段时建议这样做),您可以同时运行这两个文件,尽管我会将它们组合在 notregisterbtn 函数中,如下所示:

          <script type="text/javascript">
          jQuery(document).ready(function () {
              if (jQuery.cookie('entry_winagrand_cookie') !== null) {
                  jQuery('notregisterbtn').on('click', function () {
                      //you should first check if ga is set
                      if (typeof ga !== 'undefined') {
                          ga('send', 'event', 'QR_Win_A_Grand', 'Clicked_through_to_register');
                       }
                      //check if _gaq is set too
                      if (typeof _gaq !== 'undefined') {
                          _gaq.push(['_trackEvent', 'QR_Win_A_Grand', 'Clicked through to Register']);
                      }
                   });
              }
          });
          </script>
      

      【讨论】:

      • @lulalala 你是对的。我犯了复制和粘贴 OP 代码的错误。我已经更新了我的代码。
      • 是的,我注意到新的首选方式存在问题!所以新的方式 ga('send'... 不起作用虽然我看到网络请求很好......我们似乎需要同时提供两者但我担心当谷歌修复他们的代码时统计数据可能不准确坏了。
      【解决方案4】:

      这是我在 Google Analytics 页面上的脚本

       <script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      
          ga('create', 'UA-77777777-2', 'auto');
          ga('send', 'pageview');
      </script>
      

      为了在 Backbone.js 中跟踪我的其他页面,我将这段代码放在每个 Backbone.js 视图脚本中:

      ga('send', 'pageview', myUrl);
      

      【讨论】:

        【解决方案5】:
        /* universal event tracking */
        function trackEventTag(category, action, opt_label) {
            /* analytics.js send event */
            ga('send', 'event', { 'eventCategory': category, 'eventAction': action, 'eventLabel': opt_label });
            /* add delay or additional tracking here */
            return true;
        }
        /* send ga.js _gaq.push() events to universal tracker */
        var _gaq = window._gaq || {
            push: function (ar) {
                if (ar && ar.constructor === Array && 0 in ar) {
                    if (ar[0] == '_trackEvent') {
                        var category = 1 in ar ? ar[1] : null, action = 2 in ar ? ar[2] : null, opt_label = 3 in ar ? ar[3] : null;
                        return trackEventTag(category, action, opt_label);
                    }
                    /* test for others you want to translate here */
                }
                return true;
            }
        };
        

        【讨论】:

        • 请添加更多信息,而不仅仅是代码。谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-03
        • 2015-06-26
        • 1970-01-01
        相关资源
        最近更新 更多