2013-03-12 9 views

Odpowiedz

14

Sprawdź, czy atrybut obiektu Imagecomplete jest true:

function is_cached(src) { 
    var image = new Image(); 
    image.src = src; 

    return image.complete; 
} 

wydaje się działać (choć będzie to załadować obraz, jeśli nie jest w pamięci podręcznej, co może nie być czego chcesz):

> is_cached('http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3') 
false 
> is_cached('http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3') 
true 
+1

@JaredFarr ish - zakładam, że szukane słowo brzmi "te przypadki testowe przeszły". Dla mnie "wydaje się działać" oznacza, że ​​nie wyszedłem mu z drogi, aby zbadać problem głębiej niż to uzasadnione. – aaaaaa

+2

To nie sprawdza pamięci podręcznej. Sprawdza DOM, możesz to sprawdzić otwierając dwie zakładki, "sprawdzanie" w jednej zakładce (false) "sprawdzanie" ponownie na tej samej karcie (true), a następnie przechodzenie do drugiej zakładki i "sprawdzanie" (false), nawet jeśli powinien być buforowany. – Cheruvian

3

można sprawdzić jak:

function is_cached(img_url){ 
    var imgEle = document.createElement("img"); 
    imgEle.src = img_url; 
    return imgEle.complete || (imgEle.width+imgEle.height) > 0; 
} 

//and check, returns true or false depending on cached or not 
is_cached("http://www.somesite.com/some_image.jpg"); 
Powiązane problemy