编辑:我更改了标题,因为该问题与 IE image.load() 触发无关 - 我的 substr() 不起作用(请参阅接受的答案)。
有很多关于确保在分配 img.src 之前定义 onload 处理程序的帖子,以确保在首先从缓存加载图像的情况下 onload 处理程序就位。
这在我的代码中似乎不是问题,因为这正是我所做的。
请注意,此脚本适用于所有其他浏览器,但 IE 8 及更低版本不会触发 onload 内联函数。
var i = lastSlideIndex || 1;
while(imagesQueued < MAX_IMAGES){
var preloadImage = new Image();
preloadImage.arrayIndex = i;
preloadImage.onload = function(eventObj){
debug('Image ' + this.src + ' loaded.');
slideshowImages[this.arrayIndex] = this;
if (this.arrayIndex > lastImageIndex) lastImageIndex = this.arrayIndex;
triggerSlideshow(this.arrayIndex);
}
// add leading zeros
var leadingZeros = "0000000".substr(-(String(MAX_IMAGES).length));
imageNumber = leadingZeros.substr(String(i).length) + i;
debug('preloading Image #' + imageNumber);
preloadImage.src = fullImagePrefix + imageNumber + "." + IMAGES_TLA;
if (++i > MAX_IMAGES) i = 1;
imagesQueued++;
}
任何其他建议将不胜感激!