Javascript为什么IE不执行这段代码

Javascript why doesn't IE execute this code?

本文关键字:代码 段代码 为什么 IE 执行 Javascript      更新时间:2023-09-26

我正在制作一个具有菜单的网站(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 天的时间试图弄清楚这一点。如果有人能帮我解决这个问题,将不胜感激。

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

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

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

因此,在您的 jsFiddle 中,将作业移动到 .src 之后 作业 到 .onload .