Qu'est-ce que “var _gaq = _gaq || []; ” pour?
Async code de Suivi de Google Analytics ressemble à ceci:
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);
})();
Sur La première ligne:
var _gaq = _gaq || [];
Je pense qu'il s'assure que si _gaq
est déjà défini, nous devrions l'utiliser autrement, nous devrions d'un tableau.
Quelqu'un peut-il expliquer ce que c'est pour?
Aussi, importe-t-il si _gaq
obtient renommé? En d'autres termes, est-ce que Google Analytics compter sur un objet global nommé _gaq
?
- Il est également intéressant de noter que, sauf si vous êtes réellement à l'aide de deux extraits dans la même page (et les mauvais code, il y a de bien meilleures façons de mettre en œuvre plusieurs suivis que de simplement coller l'extrait deux fois avec différents Identifiants de comptes), vous pouvez remplacer cette ligne avec
var _gaq = []
. Certains plus possible de micro-optimisations pour l'asynchrone de Google Analytics extrait peut être trouvé ici: mathiasbynens.être/notes/asynchrone de google analytics-extrait
Vous devez vous connecter pour publier un commentaire.
Oui, il assure que
_gaq
est définie, de sorte que_gaq.push()
n'échoue jamais.Je ne voudrais pas salir avec le nom des variables dans GA code... avez-vous des raisons pour? Est-il en conflit avec l'un de vos variables? (Ensuite, je voudrais changer la mienne...)
Disallow: /admin/
, ne serait pas vous essayez d'ajouter '/admin/ " à l'URL pour voir ce qu'il a fait?Cette ligne est là pour permettre à plusieurs GA extraits dans la même page. Il s'assure que le deuxième extrait de ne pas remplacer un _gaq définie par le premier.
GA asynchrone suivi des travaux par la définition d'_gaq comme un tableau. Ce tableau comporte comme une file d'attente, ce qui vous permet de pousser (append) de configuration et de suivi de commandes" (comme _trackPageview) sur la fin de la file d'attente. Vos commandes sont stockées dans ce tableau jusqu'ga.js entièrement téléchargements.
Quand ga.js est prêt, il exécute toutes les commandes dans le _gaq tableau et remplace _gaq avec un objet. Cet objet possède également une méthode push, mais au lieu de la mise en attente jusqu'commandes, il les exécute immédiatement, parce que ga.js est disponibles pour les traiter.
Ce mécanisme permet de faire la configuration et le suivi des commandes, sans savoir si le navigateur a fini de télécharger ga.js. Cela est nécessaire parce que la async extrait de téléchargements ga.js sans bloquer les autres code sur la page de la course. Les choses allaient s'arracher les cheveux si l'autre code (vos commandes de configuration) nécessaires pour connaître l'état de ga.js en cours de téléchargement.
Tout cela absolument ne dépendent de l'utilisation du nom _gaq. Vous ne devriez pas essayer de nom, si vous le souhaitez asynchrone de suivi de travaux.
À l'aide de
||
au travail est une commune de la programmation truc qui prend avantage de l'évaluation de la direction de l'opérateur, qui est de gauche à droite. Cela signifie qu'il évalue d'abord le coté gauche. Ensuite, et seulement si c'est faux (ou un faux équivalent), est-il évaluer le côté droit.Vous pouvez également profiter de la
||
ou&&
opérateurs dans une si simple déclaration, de sorte quedevenir
qui sont à la fois de façon plus agréable à regarder.
La raison de langues permettre cela, c'est parce que c'est une perte de temps à évaluer le côté droit si la gauche va faire la totalité de la ligne de l'échec de toute façon. Donc, il l'ignore, sauf si c'est nécessaire.
EDIT:
je vais ajouter plus de détails
_gaq est tout simplement un tableau javascript, comme l'a d'abord défini. vous ajouter des événements, tels que les événements de suivi des rappels
lorsque l'ga.js le script est chargé, cependant, google prend ce tableau et il se transforme en un objet, que ga utilise.
c'est pourquoi vous poussez les fonctions dans les _gaq tableau, puis d'appeler le ga.js script après l'avoir;re fait de la construction de la matrice.
gaq est google analytics file d'attente. c'est une pile pour GA méthodes, comme le suivi des événements, la page d'attribution, etc. vous utilisez la méthode push() pour mettre GA trucs là. réduit les cas de brouillage, tout le monde devrait le faire, ou au moins apprendre le concept.
Désolé pour la réponse tardive, mais j'ai lu l'on a accepté la réponse et je pense qu'il manque la chose la plus importante. Je vais donc essayer d'expliquer ce que j'ai compris :
Tout d'abord, il a été expliqué, mais la réponse doit être complète, alors je lui explique, elle aussi, le code commence par:
Il s'assure que _gaq est défini. Si elle n'est pas définie, elle est initialisée à un tableau vide.
Pense que comme l'équivalent:
La valeur javascript
undefined
est "falsish"/"falsy", c'est à dire qu'il évalue à false lorsque converti en booléen, donc _gaq est initialisé avec[]
dans ce cas.Ce qui est important à noter est que :
Bien, je l'ai ré-expliqué, ainsi que je le peux, quelque chose de déjà expliqué. La plupart des personnes ayant de l'expérience avec javascript avait déjà compris. Cependant, la partie la plus intéressante n'est pas seulement le début!
Si _gaq est un tableau, vous permettra de tout deviner que l'élément
['command', 'argument']
est ajouté au tableau. Google analytics cela stocker dans sa file d'attente pour un traitement ultérieur. Le tableau _gaq est utilisé comme une file d'attente.Mais la partie vraiment intéressante, c'est que
_gaq.push(/*...*/)
peut être fait sans avoir un tableau nommé _gaq. C'est juste un appel de méthode, et non les tableaux peuvent aussi avoir un "push
" la méthode.Il "ouvre de nouvelles possibilités". Voici un résumé de l'un:
_gaq.push(/*...*/)
des commandes n'ont pas besoin d'être différée de plus, ils peuvent être exécutées.Pour ceux qui ont manqué l'asynchrone script de chargement de la partie, c'est:
Utiliser temporairement un tableau comme une file d'attente et la méthode de commande est grand code. C'est un moyen très intéressant pour composer avec le fait que lorsque
_gaq.push(/*...*/)
est exécuté, nous n'avons pas toujours maintenant, si la dépendance a été chargé de manière asynchrone ou non.Une autre façon intéressante de gérer ce type de problèmes est la nouvelle version de Google Analytics "isogram" extrait de:
ga(/*...*/)
l'air encore plus intuitive pour les appels_gaq.push(/*...*/)
, mais il doit encore affronter les joies de chargement des dépendances de manière asynchrone.J'espère que ma réponse ci-dessus l'a fait. Ce que je voulais partager ici, c'est que la première ligne est fait d'une manière particulière pour s'adapter à l'ensemble de la chose: initialisation qui ne nuit si fait deux fois, une utilisation intelligente de la méthode push...
Oui, c'est fait, lors de l'utilisation de ce ga.js l'extrait de code.
Oui, c'est exactement ce que vous pensez que cela fonctionne 🙂
C'est un raccourci pour
Cela signifie que si _gaq est déjà définie utiliser qu'autre chose, elle déclare un tableau vide. Avec poussoir, vous pouvez remplacer les paramètres. Si le _gaq objet n'était pas défini le 2 "lignes" après qui seraient le résultat d'une erreur.
Oui le _gaq objet est de s'attendre dans le script qui vous inclure dans le code (ga.js).