Jquery img preload non funziona in Firefox
-
04-10-2019 - |
Domanda
Recentemente ho fatto un piccolo frammento di jQuery che mi permette di mostrare un IMG di carico fino a quando viene caricata l'immagine reale.
Il frammento sembra funzionare in Safari, Chrome, ma non FireFox.
FireFox visualizza soltanto un alt loading
e non passa all'immagine caricata.
Ecco il frammento di
var loading = $('<img src="/media/ajax-loader.gif" alt="loading" />');
$('.thumbnail').each(function(){
var loadIMG = loading.clone();
$(this).after(loadIMG).load(function(){
$(this).fadeIn('fast');
loadIMG.hide();
}).hide();
});
Tutte le idee perché?
Soluzione
Non hai detto che cosa esattamente è happing su FF, ma al di sotto può essere uno dei problemi. Da jQuery documentazione
E 'possibile che l'evento di carico non sarà attivato se l'immagine è caricati dalla cache del browser. Per tenere conto di questa possibilità, siamo in grado di utilizzare un evento carico di speciale che gli incendi immediatamente se l'immagine è pronta. event.special.load è attualmente disponibile come plugin.
Ecco il link per il plugin.
Modifica:
Sulla base di osservazioni da evento di caricamento, prova di seguito:
$('.thumbnail').each(function(){
var loadIMG = loading.clone();
$(this).after(loadIMG).load(function(){
$(this).fadeIn('fast');
loadIMG.hide();
}).hide();
if (this.complete) $(this).trigger("load");
});
Naturalmente, il plug-in sembra fare stessa cosa insieme con la gestione di alcuni altri scenari come pure.