Я пробовал это в Firefox и IE 8, и это не удается. Я даже пробовал это в IE 8 без дополнений.
Из вашего кода
function loadThumbs(files, index){
var file = files[index];
var image = new Image();
$(image)
.load(function(){
$("#container").append(image);
loadThumbs(files, index+1);
})
.addClass("thumb")
.attr("src", file)
}
Как один из комментариев спросил, зачем вообще использовать рекурсию? Попробуйте следующее (извините за синтаксические ошибки).
function loadThumbs(files){
for (index=0;index<files.length;i++)
{
var file = files[index];
var image = new Image();
$(image).load(function(){
$("#container").append(image);
loadThumbs(files, index+1);
}).addClass("thumb").attr("src", file);
}
}
Возможно, что происходит в вашем случае, когда индекс достигает 20 (за пределами массива), вы получите неопределенное значение для вашей файловой переменной. Это не приводит к сбою браузера, и, поскольку у вас есть тип var, он будет передавать неопределенную переменную и, возможно, в IE 8 он будет увеличивать индекс на 1 без постепенного завершения.
Другим вариантом является проверка вашего рекурсивного метода. Окружите логику с помощью
(if index < files.length) {...}
Я сделал базовый тест с
$(document).ready(function () {
loadThumbs(["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg", "6.jpg", "7.jpg", "8.jpg", "9.jpg", "10.jpg","11.jpg", "12.jpg", "13.jpg", "14.jpg", "15.jpg", "16.jpg", "17.jpg", "18.jpg", "19.jpg", "20.jpg"], 0);
});
function loadThumbs(files, index) {
var file = files[index];
$("#container").append(file);
loadThumbs(files, index + 1);
}
Firefox отображает 20 имен файлов. IE 8 падает с исключением переполнения стека.