¿Hay alguna manera, mediante jQuery, de desencadenar un evento al cargar una imagen de fondo CSS?Evento desencadenante en la carga de imagen de fondo
Respuesta
que podría hacerlo de esta manera,
demo
$('<img>').load(function(){
// make sure to bind the load event BEFORE setting the "src"
alert('image loaded');
}).attr('src',function(){
var imgUrl = $('body').css('background-image');
imgUrl = imgUrl .substring(4, imgUrl .length-1);
return imgUrl;
}).each(function() {
// fail-safe for cached images which sometimes don't trigger "load" events
if(this.complete) $(this).load();
});
Esperaría hasta que se cargue la imagen o hasta que hay un retorno en el valor de la propiedad 'background-image'? – Squirkle
En realidad, lo que sucedió allí esperará a que se cargue la imagen ... en este caso, la imagen de fondo de la etiqueta del cuerpo ... – Reigel
Es un truco muy bueno. ¿Como funciona? No puedo averiguar a qué $ ('') va dirigido ... –
Squirkle
$('<img>').attr('src',function(){
var imgUrl = $('#body').css('background-image');
imgUrl = imgUrl .substring(5, imgUrl .length-2);
return imgUrl;
}).load(function(){
//Do Something
});
no pudo evitar darse cuenta de que el código anterior no funciona en violín. Parece que es porque devuelve "url ('/ img-path.jpg')" en lugar de simplemente "/img-path.jpg".
Sin embargo, este método todavía falla en IE. Alguien tiene una solución ie?
Lo he arreglado respuesta aceptada basada en su código y comentarios –
He encontrado que el problema con IE es caché: http://www.witheringtree.com/2009/05/image-load-event-binding-with-ie-using-jquery/
lo que podría intentar esto:
$(”).attr({src: src + ‘?random=’ + (new Date()).getTime()}).load(function(){
//custom code here....
});
$(document).ready(function(){
$('img, .hasBGI').css('opacity',0)
$('.hasBGI').each(function(){
var $this = $(this)
$bgi = $('<img src="'+/*folderFix*/$this.css('backgroundImage')+'">')
// $bgi.css(/*hiddingStyle*/)
$('body').append($bgi)
$bgi.load(function(){
$(this).remove()
$this.animate({opacity:1})
})
})
$('img').load(function(){
$(this).animate({opacity:1})
})
})
Mi intención era imagesSmoothLoad – domSurgeon
- 1. Evento de carga de imagen después de cargar la imagen
- 2. Evento de desencadenante en la carga del cuerpo completo js/jquery
- 3. retrasar la carga de una cierta imagen de fondo CSS
- 4. Evento de rueda de mouse 'ficticio' desencadenante
- 5. sensor de luz Android no evento desencadenante
- 6. Fondo de imagen de representación de Safari negro en carga
- 7. Evento desencadenante usando Jquery en cambio CSS?
- 8. ¿Es posible escuchar evento de carga de imagen en SVG?
- 9. Servicio de fondo desencadenante en un momento específico en Android
- 10. Modificación de SelectedIndex de ComboBox sin evento desencadenante en C#
- 11. Imagen de fondo de CSS URL que no se carga
- 12. Javascript Enlace de evento de carga de imagen
- 13. Precargar imagen de fondo
- 14. Evento de vinculación de JQuery cuando la imagen de fondo CSS está completamente cargada
- 15. Evento de cambio de desencadenante del menú desplegable
- 16. Evento de cambio de desencadenante <select> usando jquery
- 17. fondo de la imagen: cómo repetir la imagen como fondo en lugar de estirarla
- 18. Evento desencadenante en clic principal pero no en elementos secundarios
- 19. HTML 5 Imagen de carga de archivo como imagen de fondo
- 20. WPF establece el fondo del borde en el desencadenante
- 21. Evento desencadenante después de que se complete slideUp o slideDown
- 22. evento desencadenante teclado en un formulario con un campo
- 23. Establecer imagen de fondo en UIViewController (MonoTouch)
- 24. Mostrando una imagen de fondo en UIWebView
- 25. UIWebView finalizó la carga Evento
- 26. Imagen de fondo UIViewController
- 27. UITableViewController Imagen de fondo
- 28. Ubicación de la imagen de fondo
- 29. Android fondo de la imagen de repetición
- 30. Extracción de fondo/escena de la imagen
duplicado posible de [¿Cómo puedo comprobar si una la imagen de fondo está cargada?] (http://stackoverflow.com/questions/5057990/how-can-i-check-if-a-background-image-isloaded) – azerafati