ga 或 _gaq.push 用于 Google Analytics 事件跟踪?

Posted

技术标签:

【中文标题】ga 或 _gaq.push 用于 Google Analytics 事件跟踪?【英文标题】:ga or _gaq.push for Google Analytics event tracking? 【发布时间】: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>

【问题讨论】:

【参考方案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;
    
;

【讨论】:

请添加更多信息,而不仅仅是代码。谢谢!

以上是关于ga 或 _gaq.push 用于 Google Analytics 事件跟踪?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌网页追踪代码 —— 笔记

GA-跟踪文件下载

谷歌分析:匿名IP地址

谷歌分析事件跟踪未显示

谷歌分析Javascript

Google Analytics 跨域跟踪和 _setDomainName()