我需要添加一个.load函数的图像,但是,我不希望这个函数添加如果图像已被缓存,主要是因为在.load函数我淡入图像并隐藏加载指示器。检查图像是否已经缓存与jQuery
如果图像已被缓存,我不需要这些。有没有办法检查它是否在缓存中?
感谢, 韦斯利
我需要添加一个.load函数的图像,但是,我不希望这个函数添加如果图像已被缓存,主要是因为在.load函数我淡入图像并隐藏加载指示器。检查图像是否已经缓存与jQuery
如果图像已被缓存,我不需要这些。有没有办法检查它是否在缓存中?
感谢, 韦斯利
我很感谢刚才提出的问题,但我一直在寻求解决同样的问题,并在其他人遇到这个问题时,以下是我如何解决这个问题。
我使用了一个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
通常我只是假负载事件到位。即使图像被缓存,也需要几毫秒(取决于大小和计算机处理速度)从您的计算机加载。装载仍然发生,而不是从同一个来源。因此,如果缓存或不缓存,您应该将加载事件绑定到它。
实际上,我使用800毫秒的淡入效果来显示加载的图像(在图库中)。虽然我不希望这个缓存的图像出于显而易见的原因。 – Wesley
你不必担心这个问题。根据浏览器的不同,如果图像被缓存,您的载入处理程序不会触发,或者它会很快呈现任何可见的效果。 – Mrchief
[加载后:检查图片是否在浏览器缓存中]的可能重复(http://stackoverflow.com/questions/2446740/post-loading-check-if-an-image-is-in-the-浏览器缓存) – Mrchief
请参阅:http://stackoverflow.com/questions/3930952/javascript-preloading-images-check-whether-an-image-is-cached-loaded-to-prevent – Mrchief