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 .onload
evento 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
onload
propiedad 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
.src
antes 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.complete
verificació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 elsrc
enlace de controladores después de todo..complete
en este caso. Simplemente configure su manipulador de carga primero antes de configurarlo.src
y 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.complete
cuando 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
src
para 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
.onload
controlador antes de configurar el.src
valor 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.ready
resolvería parte del problema (si no está agregando la página).fuente
$(document).ready
para$(window).load
resolver mi problema.Descubrí que puedes hacer esto en Chrome:
Establecer el .src a sí mismo activará el evento onload.
fuente