12

当我参加面试时,被问到这个问题,我不知道如何回答。

你知道问题的关键吗?

4

2 回答 2

26

检查对象的complete属性是否为:Imagetrue

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

    return image.complete;
}

它似乎有效(尽管如果图像不在缓存中,它会加载图像,这可能不是您想要的):

> 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
于 2013-03-12T03:35:21.567 回答
5

你可以检查:

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");
于 2013-03-12T03:37:25.780 回答