Je souhaite suivre une onclick
d'un bouton sur une page d'un site, après qu'une condition est passée, vérifiant si un cookie est présent.
Très simple mais quelle syntaxe fonctionnerait le mieux?
J'ai effectué des recherches sur les préfixes ga
et gaq_Push
de la syntaxe de suivi des événements GA et (pardonnez-moi si je me trompe), mais ils semblent assez similaires?
_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>
Si vous utilisez ga.js (code asynchrone "traditionnel"), vous devez utiliser _gaq.Push. Si vous utilisez analytics.js , vous devez utiliser ga send. Les méthodes ne sont pas interchangeables, elles appartiennent à deux versions différentes du code de suivi de Google Analytics.
À présent (2017), il existe une nouvelle version du code (gtag.js). Par conséquent, si vous utilisez cette option, vous n’utilisez ni ga
ni _gaq.Push
, mais suivez plutôt les instructions de migration pour mettre votre code à la dernière version (ou vous commencez à utiliser Google Tag Manager).
Si vous avez analyalys.js et ga.js exécutés sur votre site, ce qui est recommandé tant que analytics.js est toujours en version bêta, vous pouvez exécuter les deux, bien que je les combine dans la fonction notregisterbtn, comme suit:
<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>
Je créerais une fonction si vous devez suivre différents événements pour que votre code soit plus propre.
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');
Ceci est mon script que j'ai sur la 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>
Pour suivre mes autres pages dans Backbone.js, j'ai placé ce code dans chaque script d'affichage de Backbone.js:
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;
}
};