2009-11-20 19 views
7

Acabo de dejar mis ruedas de entrenamiento de JavaScript.¿Por qué Google desinstala su código de seguimiento de Analytics?

¿Por qué Google elige unescape la línea document.write en parte 1 a continuación?

¿Por qué no lo escriben así? ¿Tal vez se necesita unescape para una compatibilidad de navegador más antigua?

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

Como referencia, todo el Google Analytics código de seguimiento se parece a esto:

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> 

entiendo w que hace el resto del código, solo curiosidad por la parte de unescape.

Editar

La conclusión es, se requiere unescape. Voté para cerrar esta pregunta porque es un duplicado (ver la respuesta marcada como correcta).

+0

posible duplicado de [¿Cuál es la ventaja de usar unescape en document.write para cargar javascript?] (Http://stackoverflow.com/questions/1224670/what -is-the-advantage-of-using-unescape-on-document-write-to-load-javascript) –

Respuesta

5

indica que el código funciona en XML/XHTML y HTML sin tener que meterse con CDATA

Por favor, vea: https://stackoverflow.com/questions/1224670/what-is-the-advantage-of-using-unescape-on-document-write-to-load-javascript

+0

Buen hallazgo en la pregunta previamente respondida. Aunque todavía se puede hacer funcionar tanto con XHTML como con HTML "sin tener que meterse con CDATA" y sin necesidad de 'unescape': http://stackoverflow.com/questions/728697/javascript-external-script-loading-strangeness/ 729072 # 729072 –

0

Escribir directamente en el documento sin utilizar el '<' o '>' significa que no tiene que escapar de ellos en formatos de documento que los interpretan literalmente. De lo contrario, la interpretación correcta es que las etiquetas <script> comienzan dentro de la cadena, que no es lo que se desea.

Además, tenga en cuenta que hay un error en el código alternativo propuesto (omitió una comilla después del final del atributo src).

+0

Se corrigió la comilla. – Jeff

2

Mi entendimiento es cuando </script> se encuentra aún dentro de las comillas "</script>" el analizador entiende erróneamente que, a su alcance el fin de la secuencia de comandos, por lo que no puede hacer como "</script>"

Y Google quiere hacer las variables seguro como pageTracker se configuran antes de la carga google-analytics.com/*.js, por lo que separar 0esca %3Cscript y %3E%3C/script%3E es solo el camino para ellos.

solo mis 2 centavos, lo siento si digo mal.

0

creo que:

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

se producirá un error de validación de HTML también.Curiosamente, también rompe la vista previa en este cuadro de comentarios :)

Cuestiones relacionadas