我在下面有以下代码,它在调用 PreloadAllImages
函数时成功地将图像预加载到浏览器缓存中。有谁知道如何发送简单的警报,例如“所有图像都已预加载到浏览器缓存中。”当加载最后一张图像(或所有图像)时。我有 300 张图像,因此 setTimeOut
将因延迟/下载滞后原因而不起作用。我试过回调,在不同的地方放置警报命令等...但都没有成功。
此代码基于此处找到的 JavaScript Only Method #1。 https://perishablepress.com/3-ways-preload-images-css-javascript-ajax/
function PreLoadAllImages() {
var images = new Array();
function preload() {
for (i = 0; i < preload.arguments.length; i++) {
images[i] = new Image();
images[i].src = preload.arguments[i];
}
}
preload('Images/Image1.jpg', 'Images/Image2.jpg', ... , 'Images/Image300.jpg');
}
最佳答案
在一些帮助下,这就是问题解决的方式,以防其他人需要它。将图像加载到 html 页面上的一个不可见的 div 中,然后运行脚本以确保所有内容都已加载。一个按钮调用 PreLoadAllImages(),然后调用 CheckImages()。
var imagefiles = [
"Images/Image1.jpg",
"Images/Image2.jpg",
.....
"Images/Image300.jpg"];
function PreLoadAllImages () {
imagefiles.forEach(function(image){
var img = document.createElement('img');
img.src = image;
document.body.appendChild(img);});
$('img').hide();
}
var all_loaded;
function CheckImages() {
$('img').each(function(){ // selecting all image element on the page
var img = new Image($(this)); // creating image element
img.src = $(this).attr('src'); // pass src to image object
if(img.complete==false) {
all_loaded=false;
return false;
}
all_loaded=true;
return true;});
}
function CheckLoadingImages() {
var result;
var Checking=setInterval(function(){
result=CheckImages();
if(all_loaded==true) {
clearInterval(Checking);
MsgAfterLoading();
}
}, 2000);
}
function MsgAfterLoading() {
alert('All Images Loaded');
}
关于javascript - 在 JavaScript 中预加载图像(完成时需要提醒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54132150/