2009-11-20 3 views
7

Nur von meinen JavaScript-Trainingsrädern.Warum entfernt Google seinen Analytics-Tracking-Code?

Warum wählt Google unescape die document.write Zeile in Teil 1 unten?

Warum schreiben sie es nicht einfach so? Vielleicht ist unescape für einige ältere Browserkompatibilität erforderlich?

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

Als Referenz sieht die gesamte Google Analytics-Tracking-Code wie folgt:

Teil 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> 

Teil 2:

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

Ich verstehe w Hat der Rest des Codes, nur neugierig auf die Unescape-Teil.

bearbeiten

Unterm Strich ist, ist unescape erforderlich. Diese Frage wurde geschlossen, da es sich um ein Duplikat handelt (siehe Antwort als korrekt markiert).

+0

mögliche Duplikate von [Was ist der Vorteil der Verwendung von unescape auf document.write, um Javascript zu laden?] (Http://stackoverflow.com/questions/1224670/what -ist-der-Vorteil-der-Verwendung-Unescape-auf-Dokument-schreiben-zu-laden-Javascript) –

Antwort

5

Es bedeutet, der Code wird

Bitte sehen mit CDATA, ohne dass Chaos in XML/XHTML und HTML arbeiten: https://stackoverflow.com/questions/1224670/what-is-the-advantage-of-using-unescape-on-document-write-to-load-javascript

+0

Nice finden Sie auf die zuvor beantwortete Frage. Trotzdem kann man mit XHTML und HTML arbeiten, "ohne sich mit CDATA anlegen zu müssen" und ohne "Unescape" zu benötigen: http://stackoverflow.com/questions/728697/javascript-external-script-loading-strangeness/ 729072 # 729072 –

0

Schreiben direkt in das Dokument, ohne die '<' mit oder '>' bedeutet, dass Sie ihnen nicht in Dokumentenformaten entkommen müssen, die diese wörtlich interpretieren. Ansonsten ist die korrekte Interpretation, dass die <script> Tags innerhalb der Zeichenfolge beginnen, was nicht erwünscht ist.

Beachten Sie auch, dass in Ihrem vorgeschlagenen alternativen Code ein Fehler aufgetreten ist (Sie haben ein Anführungszeichen nach dem Ende des src-Attributs verpasst).

+0

Das Anführungszeichen wurde korrigiert. – Jeff

2

Mein Verständnis ist, wenn </script> auch innerhalb der Anführungszeichen "</script>" der Parser fälschlicherweise gefunden versteht sich, dass seine Reichweite Ende des Skripts, damit sie wie "</script>"

nicht tun und Google will sicher Variablen wie pageTracker machen sind vor der google-analytics.com/*.js laden, so unescaping %3Cscript und %3E%3C/script%3E ist nur der Weg für sie.

nur meine 2 Cent, sorry Wenn ich falsch sage.

0

Ich denke, dass:

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

wird auch HTML-Validierung fehl.Interessanterweise bricht es auch die Vorschau auf dieses Kommentarfeld :)