JQuery Preloader аддон не работает в IE 8 и ниже...

Я использовал следующий скрипт предварительной загрузки, чтобы загрузить все изображения, а затем переключить два параметра отображения 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 секунд подождать, прежде чем его отобразить, но, очевидно, было бы лучше знать, когда все изображения загружены для отображения страницы.... любые советы / советы будет принята с благодарностью.

1 ответ

Решение

Этот плагин делает что-то неправильно, один из которых связан с проблемой с IE и load событие.

Вы должны определить load событие, а затем установите src свойство / атрибут.

Попробуйте заменить его на...

(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 = 0; i < total; i++) {
            imgList.push($("<img />")
                .load(function() {
                    loaded++;
                    setting.loaded(this, loaded, total);
                    if(loaded == total) {
                        setting.loaded_all(loaded, total);
                    }
                })
                .attr("src", imgArr[i]);

            );
        }

    }
});
})(jQuery);

Я также изменил for (in) цикл до нормального for петля. Вы не хотите углублять prototype цепь. Вы также можете использовать $.each(),

Другие вопросы по тегам