2010-10-07 25 views
1

Après avoir lu un article de blog, j'ai eu l'idée d'ajouter un code de sécurité pour m'assurer que les objets Google Analytics sont complètement chargés avant d'appeler ses fonctions.Comment puis-je m'assurer que Google Analytics est chargé avant d'appeler ses fonctions?

Code Typicle Google Analytics va quelque chose comme:

var pageTracker = _gat._getTracker("X-UAXXXXX"); 
pageTracker._trackPageview(); 

et

pageTracker._addItem(bla bla); 
pageTracker._trackTrans(); 

J'ai pensé deux options pour doubler en sorte que le _gat-objet est chargé avant de l'utiliser:

1) Utilisez JQuery.ready pour appeler les fonctions _get. Quelque chose comme:

$(document).ready(function() { 
    var pageTracker = _gat._getTracker("X-UAXXXXX"); 
    pageTracker._trackPageview(); 
} 

ou

2) Utiliser la temporisation JavaScript

function checkGat() { 

    if(gat_is_ready) { 
     var pageTracker = _gat._getTracker("X-UAXXXXX"); 
     pageTracker._trackPageview(); 
    } else { 
     setTimeout('checkGat()', 1000); 
    } 

} 

checkGat() 

Quelle est la meilleure solution? Pourquoi? et des commentaires supplémentaires?

Répondre

0

Tout cela est inutile. Utilisez simplement le nouveau Google Analytics Asynchronous Code; ça fait ça pour toi.

<script type="text/javascript"> 

    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-XXXXX-X']); 
    _gaq.push(['_trackPageview']); 

    (function() { 
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 

</script> 

Avec ce code, vous stocker les informations de suivi dans un tableau JavaScript (appelé _gaq) tôt dans la page que vous voulez. Ensuite, il n'exécute l'appel à Google Analytics qu'une fois que le fichier ga.js est chargé et prêt. En d'autres termes, il fait tout cela pour vous, sans avoir besoin d'écrire des boucles complexes, et vous n'aurez jamais de conditions de concurrence qui entraînent des erreurs JavaScript.

Ceci a l'avantage d'être non bloquant et donc légèrement plus rapide.