我正在使用JavaScript预加载多张图片,以下是代码:
```javascript ```
```javascript ```
// do the following for each image where 'this' is the path
(new Image()).src = this;
这个代码可以正常工作——在firebug中,我可以看到每次迭代后都会触发下载每个图像。
我的问题是我想要阻塞,直到实际下载完成。换句话说,我想要向用户显示“正在下载图片”的对话框,直到所有图像都下载完成。
现在,如果我只是在preload循环执行之前显示对话框(并在循环完成后删除对话框),它仅仅捕获了下载请求而不是实际的下载完成。
由于实际下载是异步的,是否有任何方法可以阻止,直到所有下载都完成?
.each()
:) - Nick Craver.bind()
适用于集合中的所有元素,并且大多数事件也有一种快捷方式,如.load()
,因此在上面的代码中,你需要将其缩小到以下内容:http://www.jsfiddle.net/nick_craver/Uu2jz/ ...请注意,这假定.src
稍后设置并且图像尚未加载,如果情况是这样,您需要循环检查.complete
,并在其中触发load
事件。 - Nick Craver