在JavaScript中预加载多个图像的最佳方法是什么?

Emm*_*ett 31 javascript

如果我有一个图像文件名数组,

var preload = ["a.gif", "b.gif", "c.gif"];
Run Code Online (Sandbox Code Playgroud)

我想在循环中预加载它们,是否有必要每次都创建一个图像对象?下面列出的所有方法都有效吗?一个更好吗?

一个.

var image = new Image();
for (i = 0; i < preload.length; i++) {
    image.src = preload[i];
}
Run Code Online (Sandbox Code Playgroud)

B.

var image;
for (i = 0; i < preload.length; i++) {
    image = new Image();
    image.src = preload[i];
}
Run Code Online (Sandbox Code Playgroud)

C.

var images = [];
for (i = 0; i < preload.length; i++) {
    images[i] = new Image();
    images[i].src = preload[i];
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Pao*_*ino 11

编辑:

实际上,我只是进行了测试,方法A没有按预期工作:

请查看:http://www.rootspot.com/stackoverflow/preload.php

如果在页面加载完成后单击第二个图像,它应该是即时显示的,因为它是预加载的,但是第一个没有,因为它在更改源之前没有时间加载.有趣.通过这个新的开发,我将继续使用方法C.

  • 没有一种方法等待下载完成 - 它们都只是设置Image对象的属性.不同之处在于A使用单个图像多次,B创建单独的图像而不保存对所有图像的引用,并且C都为每个预加载创建图像并保存参考. (4认同)