編集:問題はIE image.load()の起動とは関係がないため、タイトルを変更しました-私のsubstr()は機能していませんでした(受け入れられた回答を参照)。
画像が最初にキャッシュからロードされた場合にオンロード ハンドラが適切に配置されていることを保証するために、 img.src を割り当てる前にオンロード ハンドラを定義することを確認することに関する投稿がたくさんあります。
これはまさに私が行ったことであるため、私のコードでは問題にはなりません。
このスクリプトは他のすべてのブラウザーで機能しますが、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++;
}
他の提案をいただければ幸いです。