Предварительная загрузка изображений в массив (и ожидание их загрузки)

Поэтому я столкнулся с другой проблемой.

Когда я начал переделывать веб-страницу, над которой я работаю, я натолкнулся на мысль - почему бы не сделать так, чтобы на странице предварительно загружались материалы, и пока она делает это, покажите экран загрузки? Ну, я сделал для этого функцию, но дело в том, что она начинает делать то, что должна, пока не доходит до части open() предварительной загрузки изображения. Это просто не работает. Это потому, что я даю ему аргументы [i] часть, которая заставляет его остановиться там? Есть ли лучший способ сделать это?

function mainPageLoad() {
    var loadScreen = document.getElementById('pageload');
    loadScreen.innerHTML = "<p>Loading<span id='loadingWhat'>...</span></p><img src='images/loading.gif?v2'>";
    var loadspan = document.getElementById('loadingWhat');
    loadspan.innerHTML = " images";
    preloadImages(["images/logo.jpg"])
    //loadspan.innerHTML = " content";
    //preloadContent([""]);
}

function preloadImages() {
    var images = new Array();
    var imagesToLoad = arguments.length;
    document.writeln(imagesToLoad);
    var imagesLoaded = 0;
    document.writeln(imagesLoaded);
    for (i = 0; i < arguments.length; i++) {
        document.writeln("Loading images.");
        images[i] = new XMLHttpRequest();
        document.writeln("Made object");
        images[i].open("GET", arguments[i], true);
        document.writeln("Well, that worked.");
        images[i].send(null);
        document.writeln("Sent.");
        images[i].onreadystatechange = function() {
            document.writeln("Ready state change!");
            if (images[i].readystate == 4 && images[i].status == 200){
                imagesLoaded = imagesLoaded + 1;
                window.alertln("We have loaded another image.");
                window.alertln("Image" + String(imagesLoaded) + "out of" + String(imagesToLoad));           
            }
        }
    }
}

window.onload = init;

1 ответ

Решение

Вот гораздо, гораздо более простой способ предварительно загрузить изображения и заставить его вызывать обратный вызов, когда изображения завершаются загрузкой в ​​соответствующем предыдущем вопросе / ответе: JavaScript preloader для изображений, который поддерживает события.

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