Quiero crear un cuadro de alerta después de que se cargue una imagen, pero si la imagen se guarda en la caché del navegador, el .onloadevento no se activará.
¿Cómo puedo activar una alerta cuando se ha cargado una imagen independientemente de si la imagen se ha almacenado en caché o no?
var img = new Image();
img.src = "img.jpg";
img.onload = function () {
alert("image is loaded");
}
javascript
image-loading
Oto Shavadze
fuente
fuente

Respuestas:
A medida que genera la imagen de forma dinámica, establezca la
onloadpropiedad antes desrc.Fiddle : probado en las últimas versiones de Firefox y Chrome.
También puede usar la respuesta en esta publicación , que adapté para una sola imagen generada dinámicamente:
Violín
fuente
.srcantes de configurar .onload? Lo hizo bien en el primer ejemplo de código, pero arruinó el segundo. El segundo no funcionará correctamente en algunas versiones de IE.=]Utiliza una.completeverificación en caso de que la imagen ya estuviera en caché, por lo que el código lo estaba demostrando. Por supuesto, para la mejor práctica, siempre puede establecer elsrcenlace de controladores después de todo..completeen este caso. Simplemente configure su manipulador de carga primero antes de configurarlo.srcy NUNCA es necesario. He escrito una presentación de diapositivas que utilizan miles de sitios en todos los navegadores imaginables y la primera técnica funciona siempre. No hay necesidad de verificar.completecuando se crea una nueva imagen desde cero como esta.=]. También @ jfriend00, ¿podrías comprobar si la imagen se carga en IE? Me pregunto si es un problema con mi red o con IE y la imagen.img.src = ''antes de asignar un nuevo src si se usó antes.Si el src ya está configurado, entonces el evento se activa en el caso almacenado en caché incluso antes de que consigas el controlador de eventos vinculado. Por lo tanto, también debe activar el evento basado en
.complete.muestra de código:
fuente
Hay dos posibles soluciones para este tipo de situaciones:
Agregue un sufijo único a la imagen
srcpara obligar al navegador a descargarla nuevamente, así:En este código, cada vez que agregas la marca de tiempo actual al final de la URL de la imagen, la haces única y el navegador descargará la imagen nuevamente.
fuente
.onloadcontrolador antes de configurar el.srcvalor y no se perderá el evento onload en algunas versiones de IE.Hoy me he encontrado con el mismo problema. Después de probar varios métodos, me doy cuenta de que simplemente poner el código de tamaño dentro en
$(window).load(function() {})lugar dedocument.readyresolvería parte del problema (si no está agregando la página).fuente
$(document).readypara$(window).loadresolver mi problema.Descubrí que puedes hacer esto en Chrome:
Establecer el .src a sí mismo activará el evento onload.
fuente