繁体   English   中英

预加载图库图像。 JavaScript(无JQuery)

[英]Preloading gallery images. JavaScript (without JQuery)

我正在尝试一些用于画廊的大文件图像。 我正在尝试以最简单的方式做到这一点。 在这里,我仅使用一些示例图像:

var imageGallery = ["nebula.jpg", "galaxy.jpg", "blackHole.jpg"];

for (var i = 0; i < imageGallery.length - 1; i++) {
    var img = new Image();
    img.src = imageGallery[i];
}

我知道这段代码可以确保图像在被脚本的其余部分使用之前已被缓存,但是它不起作用。

帮助将不胜感激。

您正在寻找某种异步回调,您必须执行以下操作:

// Grab reference to image on page
var img = document.getElementById("blah");  // Or whatever you need to do

// Create new image from your list
var galleryImage = new Image();

// Create a callback that will start once you assign the src attribute to img 
galleryImage.onload = function() {

    // Here you could disable a loading icon or something, because your image is ready to go
    img.src = this.src;
}

// Kickoff everything
galleryImage.src = "www.myimage.com/path";

在您的代码中,可能看起来像这样:

var imageGallery = ["nebula.jpg", "galaxy.jpg", "blackHole.jpg"];

for (var i = 0; i < imageGallery.length - 1; i++) {
    var img = document.document.getElementsByTagName('img')[i];
    var galleryImage = new Image();

    galleryImage.onload = function() {
        img.src = this.src;
    }

    galleryImage.src = imageGallery[i];
}

也许服务器正在发送阻止缓存的标头,例如:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM