如果在加载readyState时发生注册事件,则在IE9中不会触发onload事件

时间:2013-09-02 02:11:10

标签: javascript internet-explorer internet-explorer-9

我尝试在我的HTML中放置多个图像,并在它们全部加载时对它们进行操作。

但有时在IE9中没有触发onload事件。

我设置了一些控制台调试消息,发现如果我在注册onload事件时加载了image的readyState,onload事件就不会触发。

代码段如下:

var loaded = function () {
    // increate counter to make sure all images are loaded or not
};

var thumbnails = $('img');
thumbnails.each(function () {
    console.log('this.readyState:'+this.readyState)

    if (this.complete) {
        loaded();
    } else {
        this.onload = loaded;
    }
});

P.S。我不想使用window.onload方法,因为我的脚本可能是一个插件,它会插入某人的页面。

1 个答案:

答案 0 :(得分:1)

尝试重新分配图像源(src)以触发事件,例如:

var thumbnails = $('img');
thumbnails.each(function () {
    var img = $(this);
    console.log('this.readyState:'+this.readyState)

    if (this.complete) {
        loaded();
    } else {
        this.onload = loaded;
    }
    img.attr('src', img.attr('src'));
});