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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18696998/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 22:14:39  来源:igfitidea点击:

ga or _gaq.push for Google Analytics event tracking?

jqueryeventsgoogle-analyticstracking

提问by Harry Lincoln

I would like to track an onclickof a button on a page on a site, after a condition is passed checking if a cookie is present.

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

Very simple but which syntax would work best?

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

I have researched the gaand gaq_pushprefix of the GA event tracking syntax and (forgive me if I'm wrong) but they seem pretty similar?

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

_gaq.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

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>

回答by Eike Pierstorff

If you use ga.js("traditional" asynchronous code) you have to use _gaq.push. If you use analytics.jsyou need to use ga send. The methods are not interchangeable, they belong to two different versions of the Google Analytics tracking code.

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

By now (2017) there is a new code version (gtag.js), so if you are using that you use neither ganor _gaq.pushbut instead follow the migration guidelinesto bring your code up to the latest version (or you quite sensibly start to use Google Tag Manager).

截至目前(2017年),有一个新的代码版本(gtag.js),因此,如果您使用的是你既不使用ga也不_gaq.push而是遵循迁移指南,使你的代码到最新版本(或者你很理智地开始使用谷歌标签管理器)。

回答by jLuna

I would create a function if you need to track different events, that way your code will be cleaner.

如果您需要跟踪不同的事件,我会创建一个函数,这样您的代码就会更清晰。

analytics.js

分析.js

ga.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');

回答by Blexy

If you had both analytics.js and ga.js running on your site, which is recommended while analytics.js is still in beta, you can run both, although I would combine them in the notregisterbtn function, like so:

如果您的站点上同时运行了 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>

回答by Artem Zaika

This is my script I've got on Google Analytics page

这是我在 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>

To track my other pages in Backbone.js, I put this code in each Backbone.js View script:

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

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

回答by AnOldMan

/* 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;
    }
};