2013-03-12 13 views

Antwort

14

Überprüfen Sie, ob das complete Attribut des Image Objekt ist true:

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

    return image.complete; 
} 

Es scheint zu funktionieren (obwohl es das Bild laden werden, wenn es nicht im Cache ist, was nicht sein könnte, was Sie) wollen:

> 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 - Ich nehme an, der gesuchte Wortlaut ist "diese Testfälle bestanden". "Es scheint zu funktionieren" bedeutet für mich, dass ich mir keine Mühe gegeben habe, das Thema tiefer zu erforschen, als die Frage gerechtfertigt ist. – aaaaaa

+2

Dies überprüft nicht den Cache. Es überprüft das DOM, Sie können dies überprüfen, indem Sie zwei Tabs öffnen, auf einem Tab "checken" (falsch), auf dem gleichen Tab erneut prüfen (true) und dann zum zweiten Tab gehen und "checken" (false), obwohl es sollte zwischengespeichert werden. – Cheruvian

3

Sie könnten prüfen, wie:

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"); 
Verwandte Themen