【发布时间】:2012-01-01 09:01:50
【问题描述】:
我试图检测数组中的所有图像何时加载,然后调用一个函数。在除 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'
});
}
}
}
【问题讨论】:
-
setTimeout(myFunction,1);也许?虽然这不是它不能在 IE 上运行的原因。 -
哇,这确实有效。谢谢!
-
考虑使用 jQuery 的 Deferred 对象。
-
从“myFunction()”之后开始的那段代码看起来很假 - 这只是你不小心在这里发布的杂散内容吗?
-
这也不考虑缓存的图像。如果图像被缓存,onload 事件可能不会触发。您需要检查 readystate 和 complete 属性以查看图像是否已被缓存。例如,查看这个 jQuery 插件:github.com/tentonaxe/jQuery-preloadImages/blob/master/…
标签: javascript jquery image onload