img.onload在IE中给出了无效的参数

时间:2011-11-18 15:52:35

标签: javascript jquery image onload

我正在尝试检测数组中的所有图像何时加载然后调用函数。适用于所有浏览器但IE浏览器。

//Detect when all images load
for (var i = 0, cnt = 0; i < urls.length; i++){
  var img = new Image();
  if(nodeNames[i] == 'IMG'){
    //the following line is the problem, according to IE
    img.onload = myFunction;
    img.src = urls[i];
  }
  else if(nodeNames[i] === 'DIV'){
    setTimeout(myFunction(),1);
  }else{
    setTimeout(myFunction(),1);
  }
}
function myFunction(){
  //...lots of code
}
else{
loaded = 0;
for(var i = 0, len = slides.length; i < len; ++i){
slides[i].css({
'display':'none'
});
}
}
}

1 个答案:

答案 0 :(得分:2)

您可以使用文档onload事件。

https://developer.mozilla.org/en/DOM/window.onload

  

加载事件在文档加载过程结束时触发。在   至此,文档中的所有对象都在DOM中,而且都是   图像和子帧已完成加载。

对于单个图像加载,请参阅jQuery的load event,它与名称相同的ajax load不同。这将在图像加载时执行。

$('img').load( function() {
    //do something
}); 

<强>更新

我认为这就是OP所追求的。一旦完全加载,这段代码将获得每个img。加载后,将根据它创建新图像并将其插入新区域(例如幻灯片)。在这个示例中,您可以看到两个最大的图像通常会在复制的图像列表的末尾结束。我还使用settimeout在三秒钟后加载最终图像,这应该总是在最后。

http://jsfiddle.net/HN9KU/4/

$('img').load( function () {
    var img = new Image();
    img.src = $(this).attr('src');    
    $('#showonload').append(img);
});