0

所以我遇到了另一个问题。

当我开始重做我正在处理的网页时,我想到了一个想法——为什么不让页面预加载材料,而在它这样做的时候,显示一个加载屏幕?好吧,我为此做了一个函数,但问题是,它开始做它应该做的事情,直到图像预加载的 open() 部分。它根本行不通。是因为我给它的 arguments[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;
4

1 回答 1

3

这是一种更简单的方法来预加载图像,并在图像完成加载后调用回调,相关的先前问题/答案:支持事件的图像预加载器 javascript

于 2012-07-18T19:00:17.330 回答