español ejemplos descargar definicion curso caracteristicas javascript

ejemplos - javascript html



cuándo se ha activado window.onload (2)

Estoy un poco confundido cuando se activa el evento window.onload. Por ejemplo: tengo una página que tiene muchos archivos js externos e incluso una carga bajo demanda de la secuencia de comandos (creación dinámica de una etiqueta). Todo este código está en la página (es decir, no se dispara al hacer clic o smth, debe ejecutarse durante la carga). Ahora digamos que tengo window.onload = somefunction () en el último javascript bajo demanda. ¿Es posible que window.onload se active antes de que todos los scripts se carguen realmente?


window.onload (aka body.onload ) se body.onload después de que el HTML principal, todo el CSS, todas las imágenes y todos los demás recursos se hayan cargado y renderizado. Entonces, si tus imágenes se detienen, eso puede llevar algo de tiempo.

Si solo necesita el HTML (DOM), puede usar $(document).ready() jQuery: se activará cuando se haya analizado el HTML pero antes de que el navegador haya terminado de cargar todos los recursos externos (imágenes y hojas de estilo que vienen después su elemento script en el HTML ).

Los scripts incrustados en la página se ejecutan cuando el navegador analiza el </script> de cada uno. Entonces, para ejecutar un script antes de cualquier otro script, agregue una etiqueta <script> en el encabezado justo después de <head> .

Esto significa que puede "emular" window.onload agregando una etiqueta <script> como último elemento de <body> .


No. window.onload () se invoca cuando todos los recursos (el documento, objetos, imágenes, css, etc.) han finalizado la representación.

Leer mal la pregunta Sí, es muy posible que el evento window.onload se active antes de que una secuencia de comandos añadida dinámicamente haya terminado de descargarse. Los scripts agregados usando DOM ( document.createElement () ) se descargan de manera asíncrona y no están sujetos a la regla habitual de que window.onload () espera a que todos los recursos terminen de descargarse primero.

Configuré un conjunto de pruebas para usted, http://jsfiddle.net/ywSMW/ . Esta secuencia de comandos agrega la secuencia de comandos jQuery al DOM de forma dinámica y escribe el valor de $ en la consola durante el controlador de carga . Luego escribe el valor nuevamente un segundo después. Incluso con la secuencia de comandos en caché, la primera escritura en la consola devuelve indefinido , lo que significa que la carga incluso se ha activado antes de que la secuencia de comandos de jQuery se haya descargado y analizado.

Probado en IE y Chrome.

Re: los comentarios, si desea comprobar si el evento de carga ya se ha disparado, puede establecer el valor de una variable global dentro del controlador de carga :

var windowHasLoaded = false; window.onload = function () { windowHasLoaded = true; } function doSomethingWhenWindowHasLoaded() { if (!windowHasLoaded) { // onload event hasn''t fired yet, wait 100ms and check again window.setTimeout(doSomethingWhenWindowHasLoaded, 100); } else { // onload event has already fired, so we can continue } }