2012-01-19 21 views
5

Szukam zniknięcia obrazu tła, gdy użytkownik dotrze do witryny, ale nie wtedy, gdy już ma ten obraz w pamięci podręcznej. Coś w tym stylu:Zrobić coś, jeśli obraz nie jest załadowany (jquery).

  1. Sprawdź, czy obraz tła jest już w pamięci podręcznej.
  2. Jeśli tak jest, pokaż go.
  3. Jeśli nie jest następnie ukryć je i gdy ładuje, to znikną w

jQuery mogę ukryć go, a następnie znikają, gdy go ładuje.

$("#bkg img").hide(); 

$('#bkg img').load(function() { 
$(this).fadeIn(); 
}); 

Ale jak czy to warunkowe, więc dzieje się tak tylko wtedy, gdy obraz jest już zbuforowany?

Wszystko, co znalazłem na forach, uruchamia się po zakończeniu ładowania obrazu. Jak mogę go uruchomić, ponieważ nie jest załadowany?

Dzięki za wszelką pomoc, Lernz

@Sima podstawie kodu z that other thread Zrobiłem go w miarę po - ale nie wydaje się mieć żadnego wpływu. Jeśli można zobaczyć, gdzie idę źle to by było świetne:

var storage = window.localStorage; 
if (!storage.cachedElements) { 
storage.cachedElements = ""; 
} 

function logCache(source) { 
if (storage.cachedElements.indexOf(source, 0) < 0) { 
    if (storage.cachedElements != "") 
    storage.cachedElements += ";"; 
     storage.cachedElements += source; 
    } 
} 

function cached(source) { 
    return (storage.cachedElements.indexOf(source, 0) >= 0); 
} 

var plImages; 

//On DOM Ready 
$(document).ready(function() { 
    plImages = $("#fundo-1 img"); 

    //log cached images 
    plImages.bind('load', function() { 
     logCache($(this).attr("src")); 
    }); 

    //display cached images 

    plImages.each(function() { 
    var source = $(this).attr("src") 
    if (!cached(source)) { 
     $(this).hide().fadeIn(); 
    } 
    }); 

}); 

Odpowiedz

0
$("#bkg img").hide();  
var imgCount=$("#bkg img").length; 
$('#bkg img').load(function(){ 
    if(!--imgCount){ 
     $('#bkg img').fadeIn(); 
      // your code after load 
    } else { 
     // your code onloading time 
    } 
}); 
0

myślę, że nie jest tak proste, jak to wygląda, here powinno być rozwiązaniem ..

+0

To jest doskonałe, ale mam problemy z obejściem go. Chcę zapytać, czy $ ("# bkg img") istnieje w window.localStorage.cachedElements w prawo? Pozwól, że to powiem ... – Learnz

+0

Dobra, naprawdę tego nie rozumiem. Czy ktoś ma jakieś dalsze pomysły? – Learnz

+1

Nope. Powinieneś najpierw sprawdzić window.localStorage, czy istnieje twój łańcuch źródłowy (w zależności od połączonego rozwiązania), a jeśli nie jest tam zapisany, powinieneś związać się z procedurą obsługi zdarzenia load przy pomocy kodu fadeIn, w przeciwnym razie nic nie robić i niech wyświetla się normalnie. W rzeczywistości nie jest przechowywany sam obraz, istnieją tylko trwałe informacje, czy obraz został wczytany wcześniej (udajemy, że tak, powinien być w pamięci podręcznej ..) – simekadam

Powiązane problemy