3

我创建了一个简单的照片库查看器,我想在后台预加载图像,然后在完成后运行一个函数。

我的问题是,我该怎么做?

4

3 回答 3

3
var image = new Image();
image.src = "http://foo.com/myimage.jpg";

//if you have a div on the page that's waiting for this image...
var div = getElementById("imageWrapperDiv");

//you can set it on the image object as the item to draw into...
image.myDiv = div;

image.onload = function(){
  //do whatever you're going to do to display the image

  //so in this example, because I have set this objects myDiv property to a div on the page
 // I can then just populate that div with an img tag.
 //it's not the most elegant solution, but you get the idea and can improve upon it easily
  this.myDiv.innerHTML = "<img src='" +  this.src  +"'>";
}

一旦图像加载,它就在浏览器的缓存中,因此,如果您使用 src 属性,您可以在页面上的任何位置绘制它,它会立即显示。

于 2012-05-23T19:08:54.647 回答
3

要预加载图像,请使用<link>标签并添加preloadrel-attribute:

<link rel=preload href=path/to/the/image.jpg as=image>

或者在Javascript中:

var preImg = document.createElement('link')
preImg.href = 'path/to/image.jpg'
preImg.rel = 'preload'
preImg.as = 'image'
document.head.appendChild(preImg)

元素的 rel 属性的 preload 值允许您在 HTML 中编写声明性获取请求,指定页面加载后很快需要的资源,因此您希望在页面加载生命周期的早期开始预加载,在浏览器的主要渲染机制启动。这确保了它们更早可用,并且不太可能阻塞页面的第一次渲染,从而提高性能。

文档:https ://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content

于 2018-11-27T15:12:53.797 回答
2

与典型的 Javascript 函数相比,我喜欢这种 CSS 方法:

把它放在你的 CSS 文件中:

div#preload { display: none; }

将其放在 HTML 文档的底部:

<div id="preload">
   <img src="http://domain.tld/image-01.png" width="1" height="1" alt="Image 01" />
   <img src="http://domain.tld/image-02.png" width="1" height="1" alt="Image 02" />
   <img src="http://domain.tld/image-03.png" width="1" height="1" alt="Image 03" />
</div>

此方法可确保您的图像已预加载并可用于文档中的其他位置。请记住使用与预加载图像相同的路径。

http://perishablepress.com/pure-css-better-image-preloading-without-javascript/

于 2012-05-23T19:11:58.467 回答