image.complete始终返回true

时间:2017-12-20 14:31:10

标签: javascript jquery

我想在加载图片时做一些逻辑并且它不在浏览器缓存中。问题是,使用jQuery中的complete boolean总是返回true - 即使图像不在浏览器缓存中。代码段:

var elem = $('.my-img');
console.log(elem.prop('complete'));

并且这总是在Chrome和Firefox的控制台中都记录下来。是否有任何变通方法,或者我是否错误地使用了该值?

1 个答案:

答案 0 :(得分:4)

  

...加载图片时,它不在浏览器缓存中...

据我所知,无法检查图像是否在缓存中。 complete并没有告诉你;它告诉你第一部分(大部分),img元素是可用的(例如,图像已被加载,这意味着可能在缓存中)或被破坏(或{ {3}})。

这可能是一个切线:

您的代码正在检查与complete选择器匹配的第一个 img的.my-img标记。显然,图像已完成(已损坏或已加载)。如果您要查看与该选择器匹配的所有图片,则需要某种循环,可能是map

var flags = $(".my-img").map(function() { return this.complete; }).get();

当然,当你获得它时,该数组中的任何false标志都可能过时,因为图像是使用JavaScript代码加载到带外的。