2009-11-20 11 views
7

Je sors de mes jantes d'entraînement JavaScript.Pourquoi Google supprime-t-il son code de suivi Google Analytics?

Pourquoi Google choisit-il unescape la ligne document.write dans Partie 1 ci-dessous? Pourquoi ne l'écrivent-ils pas simplement comme ceci??

Peut-être que unescape est nécessaire pour une compatibilité de navigateur plus ancienne?

document.write('<script src="' 
    + gaJsHost 
    + 'google-analytics.com/ga.js" type="text/javascript"></script>'); 

Pour référence, l'intégralité du code de suivi Google Analytics ressemble à ceci:

Partie 1:

<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) 
    ? "https://ssl." 
    : "http://www." 
); 
document.write(unescape("%3Cscript src='" 
    + gaJsHost 
    + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E" 
)); 
</script> 

Partie 2:

<script type="text/javascript"> 
try 
{ 
    var pageTracker = _gat._getTracker("UA-0000000-0"); 
    pageTracker._trackPageview(); 
} 
catch(err){} 
</script> 

Je comprends w C'est ce que fait le reste du code, juste curieux à propos de la partie unescape.

Modifier

En bout de ligne, unescape est nécessaire. Voté pour fermer cette question car il s'agit d'un doublon (voir la réponse correcte).

+0

duplication possible de [Quel est l'avantage d'utiliser unescape sur document.write pour charger javascript?] (Http://stackoverflow.com/questions/1224670/what -is-the-advantage-of-using-unescape-on-document-write-to-load-javascript) –

Répondre

5

Cela signifie que le code fonctionne en XML/XHTML et HTML sans avoir à jouer avec CDATA

S'il vous plaît voir: https://stackoverflow.com/questions/1224670/what-is-the-advantage-of-using-unescape-on-document-write-to-load-javascript

+0

Belle trouvaille sur la question précédente. Bien qu'il puisse toujours être fait pour travailler avec XHTML et HTML "sans avoir à jouer avec CDATA" et sans avoir besoin de "unescape": http://stackoverflow.com/questions/728697/javascript-external-script-loading-strangeness/ 729072 # 729072 –

0

écriture directement dans le document sans utiliser le '<' ou les caractères '>' signifient que vous n'avez pas besoin de les échapper dans des formats de document qui les interprètent littéralement. Sinon, l'interprétation correcte est que les balises <script> commencent à l'intérieur de la chaîne, ce qui n'est pas ce qui est souhaité.

Notez également qu'il existe une erreur dans le code de remplacement que vous avez proposé (vous avez manqué un guillemet après la fin de l'attribut src).

+0

Correction du guillemet. – Jeff

2

Ma compréhension est quand </script> se trouve même à l'intérieur des citations "</script>" l'analyseur entendu à tort que, son extrémité portée du script, donc ils ne peuvent pas faire comme "</script>"

Et Google veut faire des variables sûres comme pageTracker sont réglés avant la charge google-analytics.com/*.js, donc déconnecter %3Cscript et %3E%3C/script%3E est seulement le chemin pour eux.

juste mes 2 cents, désolé si je dis mal.

0

Je pense que:

document.wrIte('<script src="'" 

échouera validation HTML aussi bien.Fait intéressant, il casse également l'aperçu sur cette boîte de commentaire :)