私は大きな画像(〜500 KBずつ)を連続してロードするコードをいくつか作成しています。各画像がロードされた後、フェードインします。this fiddleをthis discussionから開始点として使用しました。jQueryを使用して要素を順次読み込んでフェードインする
イメージは私が欲しいと思うようにロードされていますが、この順次ロードを中断することなく、いくつかのことを行う必要があります。 3番目と4番目の画像の間にiframeを含むマークアップを読み込む必要があり、画像の後にリンクを読み込む必要があります。ここで私は必要なマークアップの出力例を示します。
<div id="container">
<img src="img-1.jpg" />
<img src="img-2.jpg" />
<img src="img-3.jpg" />
<div><iframe></iframe></div>
<img src="img-4.jpg" />
<img src="img-5.jpg" />
<img src="img-6.jpg" />
<img src="img-7.jpg" />
<img src="img-8.jpg" />
<img src="img-9.jpg" />
<a href="/link/">Link text</a>
</div>
私はちょうど良いイメージをロードすることができますが、私は最初の3がロードされた後にのみ、そのインラインフレームをロードする方法で立ち往生していますし、その後の残りの部分を持っています画像が読み込まれ、リンクが表示されます。ここに私の現在のjavascriptです:
var no = 22,
main = [],
i;
for (i = 1; i <= no; i++) {
main[i] = "path/to/image/folder/img-" + i + ".jpg";
}
function loadImages(arr,loc) {
if (arr.length === 0) {
return;
}
function imageLoaded(img) {
$(img).hide().appendTo(loc).fadeIn(800);
}
function loadImage() {
var url = arr.shift(),
img = new Image(),
timer;
img.src = url;
if (img.complete || img.readyState === 4) {
imageLoaded(img);
if (arr.length !== 0) {
loadImage();
}
}
else {
timer = setTimeout(function() {
if (arr.length !== 0) {
loadImage();
}
$(img).unbind("error load onreadystate");
}, 10000);
$(img).bind("error load onreadystatechange", function(e) {
clearTimeout(timer);
if (e.type !== "error") {
imageLoaded(img);
}
if (arr.length !== 0) {
loadImage();
}
});
}
}
loadImage();
}
loadImages(main,"#container");
は「いいえ」は、変数を経由サイクルへの画像の数を設定します(私は画像の数が異なる複数のページにこれを実行する必要があります)、およびloadImages機能はの引数を取ります配列を循環させ、画像をどこに置くか。このコードはおそらくもっときれいかもしれませんが、私はjavascriptを初めて使っています。どんな助けでも大歓迎です!
これは、iframeを必要な場所に正確に挿入するのに効果的です。私はリンクを最後にロードすることはできません。 iframeを挿入する方法は次のとおりです。 'if($("#container img ")。length == 3){ $("#container img:last-child ")after("
"); ' 最後のリンクについては、loadImagesの中に入れてみました: ' if(arr.length === 0){ linkMarkup(); リターン; } ' この内部loadImage: '場合($( "#コンテナIMG")長== 22){ linkMarkup()。 } ' 2番目の画像は最後から2番目の画像では動作しますが、最後の画像では動作しません。 –私は今それを持っています。これは欠けている部分だった。みんな、ありがとう。 –