2011-04-18 19 views
31

Duplicar posible:
$(document).ready equivalent without jQuery¿Hay alguna manera de verificar document.ready() si jQuery no está disponible?

sé que puede utilizar el evento window.onload para hacer funciones se ejecutan, pero hay una manera para un script para consultar si el documento está listo ¿o no?

Algo así como

function update() 
{ 
    if(!document.ready()) // don't do unless document loaded 
     return ; 
} 
window.setInterval('update();', 100) ; 

No se puede cambiar el cuerpo > elemento <, y ningún jQuery/otras bibliotecas.

+0

@justkt El PO no está buscando un equivalente preparada, pero para un método para consultar si el documento se ha convertido listo. –

+0

@ Šime - ready comprueba si el documento está listo y luego activa eventos, si corresponde. – justkt

+1

@justkt Enlazar un controlador al evento "listo" es una cosa y consultar si el documento está listo es otra cosa. El OP está haciendo lo último, y esa otra pregunta lo primero. Esas son dos cosas diferentes. –

Respuesta

65

Aquí van:

var tid = setInterval(function() { 
    if (document.readyState !== 'complete') return; 
    clearInterval(tid);  
    // do your work 
}, 100); 

Lea sobre la propiedad heredocument.readyState. No estoy seguro de si todos los navegadores actuales lo implementan.

+7

__¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Muy buena respuesta !! __ ¡Probado Chrome, IE6,7 y 9, Firefox 4, Opera 11! – bobobobo

+0

Sí, es una gran respuesta. Funciona en todos los principales navegadores. Lo sentimos, la publicación es tardía, pero aún quiero preguntar, ¿Por qué es necesario hacer setInterval por 100ms? ¿Todavía no se verificará sin el objeto setInterval? –

+1

@Yegya 'setInterval' asegura que seguimos comprobando * repetidamente *, cada 100ms, hasta que el documento se 'complete'. –

-6

Este código funcionará en todos los navegadores

if(window.attachEvent()){ 

    window.attachEvent("onload",load); 

}else{ 

    window.addEventListener("load",load,true); 

} 

function load(){ 
    //Code to execute when the document is loaded. 
} 
+2

Eso, nuevamente, es la carga, no el evento listo. Estos son diferentes –

Cuestiones relacionadas