0

このコードを使用して画像をプリロードし、後で ID で参照しています。ほとんどのブラウザーと ipad で動作しますが、IE8 では次のエラーが生成されます。

「未定義の null 参照のプロパティ 'target' を取得できません」

これは私のコードです:

var images = [{id:"kids", url:"assets/driekids.png"}, {id:"title",url:"assets/gametitle.png"}];
var assets = [];
var fnCallback = fn;
var loaded = 0;

this.startLoading = function() {
    var t = this;
    for(var i = 0;i<images.length;i++){
        var r = new Image();
        r.src = images[i].url;
        r.name = images[i].id;
        r.onload = function(){t.checkLoaded();};
    }
}

this.checkLoaded = function(e) {    
    this.assets[e.target.name] = e.target;  
    loaded++;
    if(loaded == images.length) fnCallback();       
}

私の質問: IE8 で new Image() を使用してイメージをプリロードするこの方法は可能ですか?

4

1 に答える 1

1

IE では、次のようなイベント オブジェクトを取得します。

window.event

そのため、コードを変更する必要があります。

this.startLoading = function() {
    var t = this;
    for(var i = 0;i<images.length;i++){
        var r = new Image();
        r.src = images[i].url;
        r.name = images[i].id;
        r.onload = t.checkLoaded; // you dont want an anonymous function here
    }
}

this.checkLoaded = function(e) {
    // get the event object for both IE and other browsers
    var event = e || window.event;
    var target = e.target || event.srcElement ;
    this.assets[target.name] = target;  
    loaded++;
    if(loaded == images.length) fnCallback();       
}
于 2013-10-28T16:47:56.890 に答える