为什么我只在IE9中获取图像完整属性的错误?

时间:2011-12-01 09:05:29

标签: jquery image load complete

我已经看到这种模式使用了很多,但似乎IE9不喜欢它。这是我的功能的大致概念:

function(path){
    $("<img/>",{"src":path}).one("load",function(event,alreadyLoaded) {
        if(!alreadyLoaded) { 
            myObject.loadedImages = myObject.loadedImages || [];
            myObject.loadedImages.push(this);
        }
    // Other code here...                   
    }).each(function() {
        if(this.complete) {
            $(this).trigger("load",true);
        }
    });
}

我意识到这可能是重复的,但我看到的建议不起作用: (例如this.readyState //返回未初始化的)

如果有人能指出我正确的方向,那就太好了。感谢。

1 个答案:

答案 0 :(得分:3)

.one()适用于每个元素,而不适用于每个src属性或图像文件。因此,如果您创建两个单独的图像元素并在它们上面调用.one("load", ...),则会为两个图像触发加载事件,即使它们共享一个源并且图像文件本身也会被缓存。

要防止数组中出现重复项,请改用哈希:

function addImage (path) { 
    $("<img/>").load(function (e) { 
        myObject.loadedImages = myObject.loadedImages || {};
        if(!this.src in myObject.loadedImages) {  
            myObject.loadedImages[this.src] = this; 
        }
    }).attr({ "src": path });
}