2011-08-13 16 views
7

las siguientes líneas son desde el sitio web oficial de jQueryHTML para análisis sintáctico/script orden de ejecución

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script>!window.jQuery && document.write('<script src="http://code.jquery.com/jquery-1.4.2.min.js"><\/script>');</script> 

No estoy seguro sobre el orden de análisis de HTML, o debería decir para la ejecución del script.

La pregunta es: ¿esperará la línea 2 a que se cargue la línea 1? Lo dudo.

Si la línea 1 todavía se está cargando (digamos que es de 3000KB, y tarda mucho), y la línea 2 ya se ha ejecutado. window.jQuery siempre sería falso, por lo que el segundo js siempre está incluido. Si eso es cierto, ¿cuál es la línea 1 de todos modos?

Respuesta

12

Los scripts se ejecutan en el orden en que están en el documento. El navegador espera a que se cargue el script antes de ejecutar los scripts que lo siguen.

Si este no fuera el caso, no podría tener dos archivos dependientes entre sí. Tendría que poner todo en el mismo archivo porque de lo contrario el orden de ejecución del script sería prácticamente aleatorio.

+0

ahha ... lo tengo. Gracias. – kae

1

Sí, esperará con el análisis de cualquier html hasta que la secuencia de comandos se cargue y se analice. Esta es una razón por la que debe cargar scripts externos al final de su página para que el script no bloquee el renderizado html.

+0

bien, con respecto a dónde colocar los scripts, arriba o abajo:

, ¿esperará el analizador a que se cargue el script para analizar el div? YSlow sugiere poner guiones en la parte inferior, pero veo todos esos sitios web GRANDES que no siguen esta regla. Entonces, ¿cuándo o qué tipo de guiones debo poner en el fondo? – kae

+1

Sí, primero se cargará y ejecutará el script, luego se analizará el div. Todas las secuencias de comandos que no necesita para mostrar su lado correctamente deben cargarse al final de su lado. –

0

permite hablar de la forma más tradicional de manejo sin necesidad de utilizar el atributo defer o async

Los navegadores hará lo siguiente:

  1. Descargar script s, bloqueando otro recurso de la descarga de

  2. Analizar el scripts

  3. Ejecutar los scripts

Ver Ch1, cargando y ejecutando desde High Performance JavaScript

Aquí hay otra buena referencia 12.3. Ejecución de los Programas de JavaScript desde JavaScript: The Definitive Guide, 4th Edition

Cuestiones relacionadas