我是 web-dev 的新手,所以如果这是一个愚蠢的问题,请向我道歉。我对图像预加载器感到困惑。我正在写一个包含或多或少 30-40 个大图像的画廊。gally 有一些拇指,如果单击它们,它会显示大拇指。
现在我的 HTML 看起来像这样:
<script type="text/javascript">
var gallery_smallsize_urls = [
"0_small.jpg", "1_small.jpg",
"2_small.jpg", "3_small.jpg",
...
];
var gallery_fullsize_urls = [
"0_full.jpg", "1_full.jpg",
"2_full.jpg", "3_full.jpg",
...
];
</script>
<div id="gallery_thumbs">
<ul>
<li> <img id="gallery_thumb0" src="loading.gif" alt="0"> </li>
<li> <img id="gallery_thumb1" src="loading.gif" alt="0"> </li>
<li> <img id="gallery_thumb2" src="loading.gif" alt="0"> </li>
<li> <img id="gallery_thumb3" src="loading.gif" alt="0"> </li>
...
</ul>
</div>
现在,我有两个特点:
加载队列。页面已加载。在文档准备好时,js 开始拇指队列。这意味着:加载 1° 拇指,只有在完成后才开始加载 2°。等等。
预加载填充大小的图像。当用户单击拇指时,必须等待更少的时间才能显示完整(因为完整大小的图像已经缓存在内存中)。
现在,我找到了这个投票答案:
function preload(arrayOfImages) {
$(arrayOfImages).each(function(){
$('<img/>')[0].src = this;
// Alternatively you could use:
// (new Image()).src = this;
});
}
但我认为这只是第 2 点的答案。这里会发生什么?图片是同时加载的吗?我不知道如何处理第 1 点。我认为最好的方法是使用Deferred 对象....
一些忠告?