我想在加载图片时做一些逻辑并且它不在浏览器缓存中。问题是,使用jQuery中的complete
boolean总是返回true - 即使图像不在浏览器缓存中。代码段:
var elem = $('.my-img');
console.log(elem.prop('complete'));
并且这总是在Chrome和Firefox的控制台中都记录下来。是否有任何变通方法,或者我是否错误地使用了该值?
答案 0 :(得分:4)
...加载图片时,它不在浏览器缓存中...
据我所知,无法检查图像是否在缓存中。 complete
并没有告诉你;它告诉你第一部分(大部分),img
元素是可用的(例如,图像已被加载,这意味着可能在缓存中)或被破坏(或{ {3}})。
这可能是一个切线:
您的代码正在检查与complete
选择器匹配的第一个 img的.my-img
标记。显然,图像已完成(已损坏或已加载)。如果您要查看与该选择器匹配的所有图片,则需要某种循环,可能是map
:
var flags = $(".my-img").map(function() { return this.complete; }).get();
当然,当你获得它时,该数组中的任何false
标志都可能过时,因为图像是使用JavaScript代码加载到带外的。