Ga или _gaq.push для отслеживания событий Google Analytics?
Я хотел бы отслеживать onclick
кнопки на странице на сайте после того, как условие передано, проверяя, присутствует ли файл cookie.
Очень простой, но какой синтаксис будет работать лучше всего?
Я исследовал префикс ga
и gaq_push
синтаксиса отслеживания событий GA и (простите, если я ошибаюсь), но они кажутся довольно похожими?
_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 send. Методы не взаимозаменяемы, они относятся к двум различным версиям кода отслеживания Google Analytics.
К настоящему времени (2017) появилась новая версия кода (gtag.js), поэтому, если вы используете это, вы не используете ни ga
, ни _gaq.push
, а вместо этого следуете рекомендации по переносу, чтобы довести ваш код до последней версии (или вы вполне разумно начнете использовать Диспетчер тегов Google).
Ответ 2
Если на вашем сайте работают как 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>
Ответ 3
Я бы создал функцию, если вам нужно отслеживать разные события, таким образом ваш код будет более чистым.
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');
Ответ 4
Это мой script У меня на странице 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 View script:
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;
}
};