私はweb-devを初めて使用するので、これがばかげた質問である場合は申し訳ありません。画像プリローダーについて混乱しています。私は多かれ少なかれ30-40の大きな画像を含むギャラリーを書いています。ギャリーにはいくつかの親指があり、親指をクリックすると大きな親指が表示されます。
今のところ、私の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>
今、私は私の心の中に2つの機能があります:
読み込みのキュー。ページが読み込まれます。ドキュメントの準備ができたら、jsは親指のキューを開始します。つまり、1°の親指をロードし、それが終了したときにのみ2°のロードを開始します。等々。
塗りつぶしサイズの画像のプリロード。ユーザーが親指をクリックすると、フルサイズの画像がすでにメモリにキャッシュされているため、フルサイズが表示されるまでの待ち時間が短くなります。
今、私はこの投票された答えを見つけました:
function preload(arrayOfImages) {
$(arrayOfImages).each(function(){
$('<img/>')[0].src = this;
// Alternatively you could use:
// (new Image()).src = this;
});
}
しかし、それはポイント2の答えに過ぎないと思います。ここで何が起こりますか?画像は同時に読み込まれますか?ポイント1へのアプローチ方法がわかりません。Deferredオブジェクトを使用するのが最善の方法だと思います...。
いくつかのアドバイス?