【发布时间】:2010-04-06 18:04:09
【问题描述】:
我用这样的东西
$(img).bind('load',function(){
console.log('loaded');
});
显然它可以工作,但是当页面从缓存中加载图像时 事件未触发。
我该如何解决这种情况?
【问题讨论】:
我用这样的东西
$(img).bind('load',function(){
console.log('loaded');
});
显然它可以工作,但是当页面从缓存中加载图像时 事件未触发。
我该如何解决这种情况?
【问题讨论】:
如果图像被缓存,则在某些浏览器中不会触发此事件,要解决此问题,您需要检查 .complete 属性,如下所示:
$("img").one('load',function(){
console.log('loaded');
}).each(function() {
if(this.complete) $(this).load();
});
.one() 确保它不会触发两次,.each() 部分是手动触发缓存图像的事件,这些图像本身没有执行load 事件。
【讨论】:
找到了! 每个图像都有一个 .complete 属性(布尔值),所以我只需要在绑定加载事件之前检查它。
【讨论】: