2011-08-17 69 views
4

我需要添加一个.load函数的图像,但是,我不希望这个函数添加如果图像已被缓存,主要是因为在.load函数我淡入图像并隐藏加载指示器。检查图像是否已经缓存与jQuery

如果图像已被缓存,我不需要这些。有没有办法检查它是否在缓存中?

感谢, 韦斯利

+1

你不必担心这个问题。根据浏览器的不同,如果图像被缓存,您的载入处理程序不会触发,或者它会很快呈现任何可见的效果。 – Mrchief

+0

[加载后:检查图片是否在浏览器缓存中]的可能重复(http://stackoverflow.com/questions/2446740/post-loading-check-if-an-image-is-in-the-浏览器缓存) – Mrchief

+0

请参阅:http://stackoverflow.com/questions/3930952/javascript-preloading-images-check-whether-an-image-is-cached-loaded-to-prevent – Mrchief

回答

3

我很感谢刚才提出的问题,但我一直在寻求解决同样的问题,并在其他人遇到这个问题时,以下是我如何解决这个问题。

我使用了一个window.setTimeout(),延迟时间为200ms,它调用了我的预加载器效果,并在正在加载的图像的.load()事件中,它所做的第一件事是清除超时,所以如果加载是快速 - 不影响显示,但如果图像负荷超过200ms需要更长的时间,显示预加载:

var imgTmr; 

imgTmr = window.setTimeout(function() {showLoading('zoomImage');}, 200); 

$("#zoomImage").load(function() { 
    window.clearTimeout(imgTmr); 
    hideLoading(); 
} 

$("#zoomImage").attr("src", "myLargeImage.jpg"); 

// The showLoading() and hideLoading() functions just display a wait graphic 
// the image being loaded in this instance has the id of zoomImage 
1

通常我只是假负载事件到位。即使图像被缓存,也需要几毫秒(取决于大小和计算机处理速度)从您的计算机加载。装载仍然发生,而不是从同一个来源。因此,如果缓存或不缓存,您应该将加载事件绑定到它。

+0

实际上,我使用800毫秒的淡入效果来显示加载的图像(在图库中)。虽然我不希望这个缓存的图像出于显而易见的原因。 – Wesley