javascript - 在 JavaScript 中预加载图像(完成时需要提醒)

标签 javascript

我在下面有以下代码,它在调用 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/

相关文章:

javascript - angularjs 设置并从服务获取值

javascript - AngularJS 类型错误 : Cannot call method 'apply' of undefined

javascript - 将 gridstack.js 包装到 Angular 2 组件中

javascript - setInterval() 不适用于制作数字时钟

javascript - 当字段大于 15 时,在 [HTTP POST] 之后打开 fancybox

javascript - 控制台登录 MongoDB 集合。不明确的

javascript - 检查光标何时悬停在链接上(特别是 YouTube 链接)

javascript - 如何卸载/删除 bootstrap-markdown 编辑器?

javascript - 如何使用 JavaScript 更改表格中的列宽?

javascript - 文件类型 "Required"不适用于 iPhone?