2012-09-28 27 views
12

¿Es posible detectar cuándo HTML ha terminado de cargarse Y renderizarse en la página? ¿Si es así, cómo?Detectar cuando HTML ha terminado de cargar Y representar en la página

La página consta de HTML, llamadas a ajax, recibe datos de llamadas ajax, muchas cosas de javascript y algunas imágenes también. Me gustaría detectar cuando todo ha terminado. Lo que no puedo hacer es colocar una llamada de función al final, porque no sé cuándo es el final.

Por ejemplo, la página tiene muchos elementos de estilo ajax de los que los usuarios pueden elegir, es decir, el usuario 1 puede tener un número de elementos diferente al del usuario 2 e incluso en un orden diferente.

Entonces, lo que no puedo hacer es usar la última función para simular el final de la representación HTML, porque no sabré qué función será la última función.

+2

Sería bueno saber por qué esta pregunta ha recibido votos negativos. – oshirowanen

Respuesta

8

El problema con la respuesta a su pregunta es en las últimas frases en el que dice que no sabe dónde está el final debido a las elecciones de los usuarios. Hay dos eventos automáticos a los que puede enlazar JavaScript. Lo que jQuery llama al $(document).ready(), lo que significa que el DOM está listo para manipularse (antes de que las imágenes carguen y después de que se carguen scripts y CSS externos) y lo que comúnmente se llama cuerpo onload (en jQuery puede escribirse como $(window).load()) que se ejecuta después de que todos los activos estáticos a buscar Tus llamadas a Ajax se dispararán cuando al menos el DOM esté listo y no haya un evento definido para lo que sucede después de todas ellas. Para eso, necesita hacer un seguimiento de ellos por su cuenta. Podría usar un enfoque de "último caballo fuera del granero". Agregue un poco de lógica al final de sus llamadas Ajax para ver si es la última y plantee un evento personalizado llamado "reallyAllDone"

-1

onload

<body onload="load()"> 

que pueda detectar cuando el contenido del cuerpo han cargado.

+1

Acabo de probar esto con una alerta en la carga. La alerta aparece antes de que la página haya terminado de cargarse/renderizarse. Cerrar la alerta permite que el resto de la página termine de cargarse/renderizarse, pero todavía no está bien, ya que quiero que la alerta aparezca solo después de que todo haya terminado de cargarse en la pantalla. – oshirowanen

+0

¿Tuviste el evento de carga conectado al cuerpo? – noel

+0

Acabo de probarlo así '' body onload = "alert ('Loaded');" '. – oshirowanen

-2

$ (document) .ready

le ayudará a saber cuando el DOM ha terminado su evento y su lista

+0

'.ready' no esperará a que las imágenes carguen afaik. –

+0

Tengo todas mis llamadas ajax y funciones de jquery en $ (document) .ready(). ¿No debería tener esos en $ (document) .ready()? Acabo de intentar mover todo fuera de $ (document) .ready() y solo tengo una alerta en $ (document) .ready(). Toda la página solo se renderiza parcialmente y recibo una alerta. Cerrar la alerta no termina de cargar la página. – oshirowanen

Cuestiones relacionadas