Ich möchte eine onclick
einer Schaltfläche auf einer Seite einer Website verfolgen, nachdem eine Bedingung übergeben wurde und geprüft wird, ob ein Cookie vorhanden ist.
Sehr einfach, aber welche Syntax würde am besten funktionieren?
Ich habe das Präfix ga
und gaq_Push
der GA - Ereignisverfolgungssyntax und (verzeihen Sie mir, wenn ich falsch liege) recherchiert.
_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>
Wenn Sie ga.js ("traditioneller" asynchroner Code) verwenden, müssen Sie _gaq.Push verwenden. Wenn Sie analytics.js verwenden, müssen Sie ga send verwenden. Die Methoden sind nicht austauschbar, sie gehören zu zwei verschiedenen Versionen des Google Analytics-Tracking-Codes.
Mittlerweile (2017) gibt es eine neue Codeversion (gtag.js). Wenn Sie also verwenden, verwenden Sie weder ga
noch _gaq.Push
, sondern befolgen Sie die Migrationsrichtlinien , um Ihren Code auf die neueste Version (oder Sie beginnen recht sinnvoll, den Google Tag Manager zu verwenden.
Wenn Sie auf Ihrer Website sowohl analytics.js als auch ga.js ausgeführt haben, was empfohlen wird, während analytics.js noch in der Betaversion ist, können Sie beide ausführen, obwohl ich sie in der notregisterbtn-Funktion kombinieren würde:
<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>
Ich würde eine Funktion erstellen, wenn Sie verschiedene Ereignisse verfolgen müssen. Auf diese Weise wird Ihr Code sauberer.
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');
Dies ist mein Skript, das ich auf der Google Analytics-Seite erhalten habe
<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>
Um meine anderen Seiten in Backbone.js zu verfolgen, gebe ich diesen Code in jedes Backbone.js-View-Skript ein:
ga('send', 'pageview', myUrl);
/* 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;
}
};