2011-05-18 18 views
5

Tengo un script que asocia los controladores de eventos onload a todas las imágenes de una página, sin embargo, debido a que es un script de GreaseMonkey, solo se puede ejecutar después de que las imágenes estén allí. cargado, ¿hay alguna manera de desencadenar el evento de carga si la imagen ya está cargada?Evento de carga de imagen después de cargar la imagen

+0

Realicé una solución al crear un nuevo objeto de Imagen con la misma fuente que el elemento de imagen y trabajando en eso y reemplazando la imagen original – Bugster

Respuesta

0

Es un evento de carga. No hubiera pensado que ese evento se dispararía más de una vez.

Puede adjuntar su secuencia de comandos al evento de carga cuerpo/documento y recorrer todas las imágenes y adjuntar sus controladores de eventos, entonces, tal vez.

+0

Eso funciona pero la página carga lentamente y las imágenes deben reemplazarse tan pronto como sea posible – Bugster

+0

Otra opción sería adjuntar manejadores de eventos a las imágenes en lotes, antes de que la página haya terminado de cargarse pero después de que las imágenes se hayan cargado, al incluir scripts directamente en la página. No sé si eso funcionaría con Greasemonkey. –

+0

Lo he intentado pero algunas imágenes se cargan antes de que pueda agregar las secuencias de comandos – Bugster

1

Si no está en desacuerdo con el uso de un marco como jQuery, hay una función triggerHandler() que debe hacer lo que necesita.

Necesitará una prueba para comprobar si la imagen se ha cargado o no en su secuencia de comandos (debería poder encontrar detalles sobre cómo hacerlo con Google); si no se ha cargado, simplemente adjunte el controlador de eventos onload; si se ha cargado, puede adjuntar el controlador de eventos onload y luego desencadenarlo mediante la función triggerHandler() de jQuery, o ejecutar el código/función que habría sido ejecutado por el controlador de eventos onload, lo cual es más fácil depende de cuál sea su el controlador de eventos onload sí lo hace.

+0

Por alguna razón no puedo editar la pregunta, pero lo que quería era una forma de adjuntar un evento que se activará cuando la imagen se cargue, o si la imagen ya está cargada se ejecutará de inmediato – Bugster

+0

@Bugster He editado mi respuesta para incluir información adicional sobre cómo puede hacerlo. –

+0

Esa hubiera sido una buena solución, pero ya tengo una, quizás la implemente más tarde – Bugster

0

Acabo de tener el mismo problema y Google me lleva allí.

No quería utilizar jQuery, por lo que busqué otra solución. Al final, en mi caso, simplemente cambié el atributo "src" de la imagen a cualquier imagen ficticia (por ejemplo, 1pix.png) justo antes de configurar la imagen correcta en "src", para forzar una recarga para cada imagen. Por supuesto, esto no es una idea brillante si tiene imágenes grandes y/o si carga imágenes con frecuencia ... Pero en mi caso está bien, supongo (además, creo que el mecanismo subyacente del caché del navegador evita una recarga real de la imagen). ..).

Espero que pueda ayudar a los demás!

PD: Parece que está cerca de la solución de @Bugster pero realmente no lo entendí.

Cuestiones relacionadas