2009-11-20 13 views
7

Appena fuori dalle mie rotelle di addestramento JavaScript.Perché Google scansiona il codice di monitoraggio di Analytics?

Perché Google sceglie lo unescape la riga document.write in parte 1 di seguito?

Perché non lo scrivono solo in questo modo? Forse unescape è richiesto per alcune vecchie compatibilità con i browser?

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

Per riferimento, l'intero Google Analytics codice di monitoraggio si presenta così:

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

Parte 2:

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

capisco w il resto del codice lo fa, solo curioso della parte unescape.

Modifica

La linea di fondo è, unescape è richiesto. Votato per chiudere questa domanda perché è un duplicato (vedi risposta contrassegnata corretta).

+0

possibile duplicato di [Qual è il vantaggio dell'uso di unescape su document.write per caricare javascript?] (Http://stackoverflow.com/questions/1224670/what -è-il-vantaggio-dell'uso-unescape-on-document-write-to-load-javascript) –

risposta

5

Significa il codice funzionerà in XML/XHTML e HTML senza dover pasticciare con CDATA

Si veda: https://stackoverflow.com/questions/1224670/what-is-the-advantage-of-using-unescape-on-document-write-to-load-javascript

+0

Bello trovare la domanda precedentemente risposta. Anche se può ancora essere fatto funzionare con XHTML e HTML "senza dover incasinare con CDATA" e senza bisogno di 'unescape': http://stackoverflow.com/questions/728697/javascript-external-script-loading-strangeness/ 729072 # 729072 –

0

Scrivendo direttamente nel documento senza utilizzare la '<' o '>' caratteri significa che non devi sfuggire a loro in formati di documento che li interpretano alla lettera. In caso contrario, l'interpretazione corretta è che i tag <script> iniziano all'interno della stringa, che non è ciò che si desidera.

Inoltre, notare che c'è un errore nel codice alternativo proposto (mancava un segno di virgola dopo la fine dell'attributo src).

+0

Correzione del segno di virgola. – Jeff

2

La mia comprensione è quando </script> si ritrova anche all'interno le virgolette "</script>" il parser erroneamente inteso che la sua fine portata dello script, in modo che non può fare come "</script>"

E Google vuole rendere variabili sicuri come pageTracker sono impostate prima del caricamento di , quindi %3Cscript e %3E%3C/script%3E senza possibilità di escape sono solo la via per loro.

solo i miei 2 centesimi, scusate se dico male.

0

penso che:

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

mancherà di convalida HTML.È interessante notare che interrompe anche l'anteprima in questa casella di commento :)

Problemi correlati