根据此处的答案,我正在尝试等待,然后在数组中的所有图像都已完成加载(使用 .complete)时收到一条消息。因此,我设置了一个无限循环,如下所示。但是,当我运行它时,我收到一个错误,即未定义 checkForAllImagesLoaded()。这段代码通过一个小书签运行,因此它全部包含在一个匿名函数构造中(如下所示)。如果我在该构造之外重新定义我的函数和变量,它就可以工作。但这似乎是编写书签的一种糟糕方法。我该如何解决这个问题,以便它在 setTimeout 之后仍能识别该功能?
(function() {
//var images = array of images that have started loading
function checkForAllImagesLoaded(){
for (var i = 0; i < images.length; i++) {
if (!images[i].complete) {
setTimeout('checkForAllImagesLoaded()', 20);
return;
}
}
}
checkForAllImagesLoaded();
})();