2011-11-24 11 views
6

Estoy creando una aplicación de vista web para iPad, y quiero mostrar una pantalla emergente hasta que se carguen y se procesen el archivo de índice y un conjunto de imágenes.¿Hay algo así como un evento listo cuando se carga y procesa una imagen en html?

Quiero que desaparezca esta pantalla secundaria cuando se cargan y procesan todas las imágenes, por lo que el usuario no ve la imagen típica de carga y representación de imágenes que no están en caché.

¿Hay algún evento en los navegadores para la realización de imágenes que pueda detectar, o hay algún complemento de Javascript que pueda hacer esto?

+1

De los [jQuery '' listos Docs()] (http://api.jquery.com/ready/): "este evento no se activa hasta que todos los recursos, como las imágenes, se hayan recibido por completo" ... parece que '$ (document) .ready()' debería hacer el truco :) – Clive

+0

En el mismo documento, en realidad dice que al trabajar con imágenes utilice load(). ¡Pero gracias por señalarme a esta página de todos modos! –

Respuesta

6

Hay dos detectores de eventos DOMContentLoaded y carga. El evento de carga se dispara cuando todos los archivos han terminado de cargarse desde todos los recursos, incluidos los anuncios y las imágenes. Las imágenes se muestran durante la descarga, por lo que esto debería ser lo que estás buscando.

Véase el demo here

-1

Puedes añadir .load() a cada imagen y luego simplemente comprobar que todas las imágenes se cargan al declarar una variable.

2

voy a escribir para usted:

loadedImages = 0; 
timesChecked = 0; 
checkInterval = 500; 
maxLoadTime = 10000; // in miliseconds 
window.onload = function() { 
    for (var i = 0; i < document.getElementsByName('img').length; i++) { 
    document.getElementsByName('img')[i].onload = function() { 
     loadedImages++; 
    } 
    } 
    intervalID = setInterval("checkSplash()", checkInterval); 
} 

function checkSplash() { 
    timesChecked++; 
    if (loadedImages >= document.getElementsByName('img').length || timesChecked * checkInterval >= maxLoadTime) { 
    clearInterval(intervalID); 
    // hide splash screen 
    } 
} 

Enjoy :)

Es bastante simple en realidad: <img src=".." onload="alert('image 1 is loaded!')" />

+0

Esto es realmente una muy mala idea, porque cuando escribes mal UNA url única imagen, los visitantes no podrán pasar la pantalla de inicio. Usted PODRÍA hacer un temporizador que alternativamente descarta la pantalla de bienvenida después de un período aunque no todo está cargado (debido a problemas del servidor o URL incorrecta) – BronzeByte

+0

Esto funciona para una sola imagen, mi página tiene varias imágenes, y necesito saber cuándo todo el mundo está cargado :) –

+0

Hice una solución completa, espero que disfrutes – BronzeByte

Cuestiones relacionadas