2011-06-01 19 views
7

En el núcleo, esta es una pregunta de javascript, pero estoy interactuando el evento con jQuery.

He aquí un caso de ejemplo:

<html> 
    <head> 
    <script src="waiting_on_ready.js" /> 
    </head> 
    <body> 
    <script src="http://somewhere.com/not_cached.js"></script> 
    </body> 
</html> 

¿La devolución de llamada $ ready en waiting_on_ready.js tiene que esperar a que se carguen not_cached.js? ¿Espera a que se ejecute not_cached.js?

+1

puede ser que usted puede poner una alerta y probar – zod

+0

http://stackoverflow.com/questions/1213281/does-javascript-have-to-be-in-the-head-tags – zod

Respuesta

9

Sí y sí.

La ejecución de <script> elementos es sincrónico excepto cuando se utiliza el HTML5 "async" attribute. Se requiere la ejecución síncrona de JavaScript (a menos que se solicite lo contrario) porque JavaScript puede modificar la secuencia de documentos a través de document.write, etc. (Sin embargo, la recuperación real de los recursos puede estar en paralelo.)

Happy coding.

+0

Gracias! ¿Hay algún evento que se active antes de que se carguen los scripts externos, pero después de que el DOM esté listo para manipularse? ¿O el DOM no está listo, por definición, hasta que se carguen y/o ejecuten ? – Aaron

+1

@ Aaron No está listo hasta que esté listo :) La ejecución de los elementos del script evita que el DOM esté listo (por ejemplo, "impide que se lea", porque la transmisión se puede modificar) hasta que se terminen de ejecutar. Recuerde, el primer elemento de script se ejecuta antes de todos los elementos de script subsiguientes y esto se puede utilizar. Tenga en cuenta que "ejecutar en tiempo real" solo significa que el código se ejecuta; si esas secuencias de comandos tienen temporizadores de configuración y/u otros eventos, esos temporizadores pueden dispararse después de cargar el DOM. –

+0

@ Aaron OHOHOHOH !!! Mi respuesta explica eso. – Kayla

1

$(document).ready() no se activaría antes de not_cached.js para ser cargado y ejecutado (suponiendo ejecución en not_chached.js es síncrona)

0

el guión $.ready realiza después de la página se ha cargado completamente, as the onload event does, sin embargo, si una secuencia de comandos en línea se encuentra a continuación, es ejecutado

5

Listo para incendios cuando todos los elementos DOM están listos para la manipulación.

Cuando el navegador encuentra un elemento script, el análisis DOM se detiene hasta que se haya ejecutado el script, por lo que debido a la forma en que funciona, se dispara después de que se carguen todos los scripts.

+0

Tuve que dárselo a pst desde que fue el primero con la respuesta correcta. ¡Gracias! Tener un voto positivo :) – Aaron

+0

Mi respuesta fue incorrecta al principio, así que viviré con ella. Un voto positivo es mejor que nada. :) – Kayla

Cuestiones relacionadas