2

大家,我正在制作一个有菜单的网站(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);

我花了大约 2 天的时间试图弄清楚这一点。如果有人可以帮助我,将不胜感激。

4

1 回答 1

3

在 IE 中,您必须在分配.onload之前分配处理程序.src。如果您不这样做,则 onload 事件可能会在您的 onload 处理程序到位之前触发,您将错过该事件。

// assign .onload before .src
img.onload = function() {};
img.src = "xxx.jpg";

如果图像在浏览器缓存中(因此它们在.src分配时立即加载)并且您的 onload 处理程序将永远不会执行,则 IE 中的特定问题将发生。

因此,在您的 jsFiddle 中,将分配移动到.src分配到.onload.

于 2012-05-11T21:54:42.700 回答