我所有人,我正在创建一个有菜单的网站(http://euroscala.balkanium.com/),当您点击菜单项时,应该会出现一个缩略图列表。我试图预加载应该出现的所有图像,然后显示它们。除了IE(我有版本8)之外,它在每个浏览器上都能正常工作。我已经为愿意在这里看一看的人整理了代码:http://jsfiddle.net/THpgM/2/
我认为问题在于这段代码(靠近小提琴中第一个函数的底部)
img.onload = (function(i){
// code here is executed
return function(){
// code here is not
++totalLoaded;
document.getElementById("li" + i).style.height = this.height + "px";
document.getElementById("li" + i).setAttribute("data-height", this.height);
if(totalLoaded == totalThumbs){
// do some stuff
}
};
})(i);
我花了两天的时间试图解决这个问题。如果有人能帮助我,我将不胜感激。
答案 0 :(得分:3)
在IE中,您必须在分配.onload
之前分配.src
处理程序。如果你没有,那么onload事件可能会在你的onload处理程序到位之前触发,你将错过这个事件。
// assign .onload before .src
img.onload = function() {};
img.src = "xxx.jpg";
如果图像在浏览器缓存中(因此它们在分配.src
时立即加载)并且您的onload处理程序永远不会执行,IE中的特定问题将会发生。
因此,在您的jsFiddle中,将作业移至.src
,将作业转移到.onload
。