2010-03-16 12 views
10

Tengo una pregunta, en mi aplicación web ASP.NET MVC tengo que hacer cierta validación una vez que la página y todos los controles se carguen.Cuál es la diferencia entre Window.load y document.readyState

En javascript estaba usando una línea de código belwow para llamar a un método.

window.load = JavascriptFunctionName ; 

Alguien de mi equipo me pidió que no se usó arriba línea de código lugar de utilizar jQuery para hacer lo mismo

document.attachEvent("onreadystatechange", function() { 
     if (document.readyState === "complete") { 
      CheckThis(); 

     } 
    }); 

Por favor, me ayudan en la comprensión de lo que es la diferencia entre dos. Cuando lo probé al mantener la alerta en ambos Jquery, la comprobación se ejecuta primero y llama a la función CheckThis cuando window.load toma algo de tiempo y se ejecuta después. Sugiera

+0

Aquí es una pluma que muestra el orden en el que todo el fuego acontecimientos, el enfoque ISN jQuery' t necesariamente la elección correcta en cualquier circunstancia: [codepen.io/pen/jagxdb](https://codepen.io/anon/pen/jagxdb?editors=0010). – Shikkediel

Respuesta

6

window.load - Se ejecuta cuando se carga todo el contenido, incluidas las imágenes.

document.ready - Esto se ejecuta cuando el DOM está listo, todos los elementos están en la página y listos para hacer, pero las imágenes no están necesariamente cargadas.

Aquí es la forma en jQuery para hacer document.ready:

$(function() { 
    CheckThis(); 
}); 

Si quería todavía tiene que pasar en window.load, hacer esto:

$(window).load(function() { 
    CheckThis(); 
}); 
+2

['readyState' tiene 3 opciones] (https://developer.mozilla.org/en/docs/Web/API/Document/readyState)' loading', 'interactive' y' complete', ¿de qué estás hablando aquí? 'complete' de acuerdo con los documentos significa que se cargan todos los' sub-resources' (incluidas las imágenes, supongo ...). Luego dice que indica que el evento 'carga' ha sido disparado. – Alvaro

+0

Podría necesitar una actualización. El uso de una carga como esa ya estaba en desuso, pero ahora se ha eliminado. – Shikkediel

3

window.load desencadenado cuando su página completamente cargado (con imágenes , banners, etc.), pero se activó document.readyState cuando DOM está listo

3

El controlador listo se ejecuta tan pronto como se haya creado el DOM, sin esperar a que se carguen todos los recursos externos.

Puesto que usted ha usando jQuery, una forma más concisa, el navegador agnóstico, y la sintaxis ampliamente utilizado para ello es:

$(function(){ 
    CheckThis(); 
}); 
+0

gracias anon-downvoter jajaja – heisenberg

Cuestiones relacionadas