跨浏览器图像onload事件处理

ddl*_*ack 3 jquery

在负载事件http://api.jquery.com/load-event/的jQuery文档中,它说 Can cease to fire for images that already live in the browser's cache.有关此的更多信息,例如它影响的浏览器,以及在什么情况下?

use*_*654 10

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

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

UPDATE

如果您更改代码,它将始终在所有浏览器中触发加载事件.

var img = new Image();
$(img).load(doneCallback);
img.src = "foo.jpg";
Run Code Online (Sandbox Code Playgroud)

  • @ddlshack注意:如果您首先绑定load事件,然后更改源,它实际上将始终触发load事件. (2认同)