Я использовал следующий сценарий предварительной загрузки, чтобы загрузить все изображения, а затем переключить два параметра отображения div, чтобы пользователь не мог увидеть сайт «вместе».Проблема, конечно, в IE 8 и ниже отказываются переключаться.Я рассмотрел несколько проблем и ошибок предварительного загрузчика, и все они ссылаются на кеширование, но я еще не нашел фактического решения ... Любая помощь будет принята с благодарностью.Вот код:
Расширение:
(function($) {
var imgList = [];
$.extend({
preload: function(imgArr, option) {
var setting = $.extend({
init: function(loaded, total) {},
loaded: function(img, loaded, total) {},
loaded_all: function(loaded, total) {}
}, option);
var total = imgArr.length;
var loaded = 0;
setting.init(0, total);
for(var i in imgArr) {
imgList.push($("<img />")
.attr("src", imgArr[i])
.load(function() {
loaded++;
setting.loaded(this, loaded, total);
if(loaded == total) {
setting.loaded_all(loaded, total);
}
})
);
}
}
});
})(jQuery);
Код для его вызова:
$(function() {
<? if ($dir = opendir('images')) {
$images = array();
while (false !== ($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$images[] = $file;
}
}
closedir($dir);
foreach($images as $image) {
if(stristr($image, '.'))
$preload .= "'images/".$image."',";
}
$preload = substr($preload, 0, -1);
}?>
$.preload([<?=$preload?>],
{
loaded_all: function(loaded, total) {
$('#main_loading').css('display', 'none');
$('#container').css('display', 'block');
}
});
});
Я забыл, где я изначально нашел этот код, но изменилэто немного, чтобы удовлетворить мои потребности.Наш сайт разработчиков, где это можно увидеть, выглядит следующим образом: http://www.branninggroup.com/backbeat/media_player/
Я добавил временное исправление, чтобы оно частично работало прямо сейчас в IE, заставив 10 секундное ожидание перед его отображением, но, очевидно, скорее всего сможетзнать, когда все изображения загружены для отображения страницы .... любые советы / рекомендации будут с благодарностью.