ventana pasar para navegador lista eventos evento javascript javascript-events onload

pasar - lista de eventos javascript



¿Hay burbujas disponibles para los eventos de carga de imágenes? (5)

Puede utilizar el controlador de eventos Image.onload pero no hay burbujas involucradas.

var i = new Image; i.onload = function() { this.style.display = ''block''; }

Puedo usar:

window.addEventListner();

de alguna manera.

Todas mis imágenes tienen una display = ''none'' .

Una vez que la imagen se haya cargado,

Quiero configurar display = ''inline''

De esta manera puedo normalizar lo que se muestra mientras se descarga la imagen.

En este caso, no puedo precargar mis imágenes.


$(''img'').on(''load'', function() { $(this).show() })

Sin bibliotecas:

window.onload = function() { var imgs = document.querySelectorAll(''img'') imgs.onload = function() { this.style.display = ''inline''; } }


Array.prototype.forEach.call(document.querySelectorAll(''img''), function (elem) { elem.addEventListener(''load'', function () { this.style.display = ''inline''; }); if (elem.complete) { elem.style.display = ''inline''; } });

El evento "carga" no se disparará si la imagen ya se ha cargado de forma incidental; por lo tanto, verificamos si complete ya está configurado.


El evento load / load no burbujea ( referencia , referencia ), entonces lo que está pidiendo no es posible. Tendrá que adjuntar un controlador de eventos a cada nodo de imagen.


Utilice el detector de eventos de captura en un nodo DOM que no sea window ( body u otro elemento primario de elementos de imagen de interés):

document.body.addEventListener( ''load'', function(event){ var tgt = event.target; if( tgt.tagName == ''IMG''){ tgt.style.display = ''inline''; } }, true // <-- useCapture )

Con esto no tiene que (re) adjuntar manejadores de eventos mientras itera a través de document.images .

Y esto también funcionará para imágenes insertadas dinámicamente.

Lo mismo es cierto para los eventos de carga de error la imagen. MDN: addEventListener