我正在尝试检测数组中的所有图像何时加载然后调用函数。适用于所有浏览器但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'
});
}
}
}
答案 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在三秒钟后加载最终图像,这应该总是在最后。
$('img').load( function () {
var img = new Image();
img.src = $(this).attr('src');
$('#showonload').append(img);
});