Me acabo de dar cuenta de que carezco del conocimiento fundamental de lo que ocurre exactamente cuando una página se carga en un navegador.
Supongamos que tengo una estructura como esta:
<head>
<script src="jquery.js" type="text/javascript"></script>
<script src="first.js" type="text/javascript"></script>
</head>
<body>
...
<script type="text/javascript" id="middle">
// some more JS here...
</script>
...
<script src="last.js" type="text/javascript"></script>
</body>
Estas son las preguntas que tengo:
qué secuencia están sucediendo cosas en? Primero, el DOM luego se ejecuta el JS, ¿es viceversa, o es simultáneo (o tan pronto como los archivos JS finalizan la descarga, sin importar el DOM)? Sé que los scripts están cargados en orden.
¿Dónde encaja
$(document).ready()
? En la pestaña Red de Firebug veo el eventoDOMContentLoaded
y el eventoload
. ¿Se activa$(document).ready()
cuando se desencadena el eventoDOMContentLoaded
? No se pudo encontrar ninguna información concreta sobre esto (todos simplemente mencionan "cuando se carga el DOM").¿Qué significa exactamente "cuando se carga el DOM"? ¿Que todo el HTML/JS ha sido descargado y analizado por el navegador? ¿O solo el HTML?
Es posible la siguiente situación: hay un
$(document).ready()
que llama al código enlast.js
, pero se ejecuta antes de que last.js se haya cargado? ¿Dónde sería más probable (enfirst.js
o el bloque de código en línea)? ¿Cómo puedo evitar este escenario?
Quiero undestand el panorama general de lo que sucede cuando y lo que depende de lo que (en su caso).
Muy interesante. Gracias por la perspectiva de futuro! – montrealist
En realidad, si bien las secuencias de comandos de la parte inferior son útiles, aún deben ejecutarse antes de que se cargue la página. Cargarlos de forma asincrónica es mucho mejor, lo que significa que incluso si los coloca en la parte superior, el navegador seguirá analizando la página y cargando el script en paralelo. El único problema es que ya no sabrá en qué orden se ejecutan los scripts. – Jens
Probé una página aspx en IE9 (emulada desde herramientas de desarrollador) con scripts movidos desde el comienzo de
hasta el final de , y encontré que los tiempos de carga eran más rápidos cuando los scripts estaban dentro de la cabecera. grabó los videos de carga para medir la experiencia del usuario. Ningún ganador claro para mí – mishal153