Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在IE8中预加载图像时出错_Javascript_Internet Explorer 8_Loading - Fatal编程技术网

Javascript 在IE8中预加载图像时出错

Javascript 在IE8中预加载图像时出错,javascript,internet-explorer-8,loading,Javascript,Internet Explorer 8,Loading,我使用这段代码来预加载图像,并在以后按id引用它们。 它可以在大多数浏览器和ipad上运行,但IE8会产生以下错误: '无法获取未定义的空引用的属性'target' 这是我的代码: var images = [{id:"kids", url:"assets/driekids.png"}, {id:"title",url:"assets/gametitle.png"}]; var assets = []; var fnCallback = fn; var loaded = 0; this.sta

我使用这段代码来预加载图像,并在以后按id引用它们。 它可以在大多数浏览器和ipad上运行,但IE8会产生以下错误:

'无法获取未定义的空引用的属性'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();       
}
var images=[{id:“kids”,url:“assets/driekids.png”},{id:“title”,url:“assets/gametitle.png”}];
var资产=[];
var=fn;
var=0;
this.starting=function(){
var t=这个;

对于IE中的(var i=0;i,您可以得到如下事件对象:

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();       
}
this.startLoading=函数(){
var t=这个;

对于(var i=0;i我可以使用“if(!e)e=window.event;”?@PietBinnenbocht在您的示例中
e
始终是未定义的,因为您从未将其传递给处理程序。@PietBinnenbocht查看上面的示例谢谢,您让我走对了方向。我还将onload代码更改为“$(img).bind(“load”…)。它现在在IE9和IE10中工作。只有在IE8中,“target”没有“name”属性,因此我无法使用此来引用图像。资产[“title”]