2012-05-01 34 views

回答

10

我不确定哪些浏览器受到影响,但很容易检查。

var img = new Image(); 
img.src = "foo.jpg"; 
if (img.complete || img.readyState === 4) { 
    // image is cached 
    doneCallback(); 
} 
else { 
    $(img).on('load',doneCallback); 
} 

UPDATE

如果你身边更改代码,这将始终如一地火在所有浏览器加载事件。

var img = new Image(); 
$(img).load(doneCallback); 
img.src = "foo.jpg"; 
+0

如果浏览器具有缓存的图像,它会在设置src之后直接加载(不需要首先执行加载检查)吗? – ddlshack

+0

是的,但它可能不会触发负载回调。这就是为什么我们首先检查它是否已经完成加载。如果它已经完成加载,加载事件可能不会触发,所以我们不绑定它。 –

+0

如果在更改图像src之前加载事件被绑定,那么怎么办?这是否会导致加载事件始终触发? – ddlshack