1

コード例:

var img = $("img");
var n = img.length;
var i = 0;
function loadImg(i) {
    if( i < n ) {
        $(img[i]).load( function() {
            console.log("img["+i+"] loaded");
            i++;
            loadImg(i);
        });
    } else {
        console.log("img["+i+"] loaded");
        return false;
    }
}
loadImg(0);

このコードは機能しますが、画像がすでにブラウザキャッシュにある場合、jQuery.loadは起動しません。画像がブラウザのキャッシュにあるかどうかを確認し、jQuery.loadを強制的に起動するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

2

Paul Irish は、そのためのきちんとした小さなプラグインを作成しました。キャッシュからロードされた画像を含め、まさにあなたが望むことを行います:

https://github.com/paulirish/jquery.imgloaded

上記のプラグインを含めてフィドルを更新しました。これはあなたの質問に答えるはずです:

http://jsbin.com/acuhaf/9/edit

于 2013-03-12T14:52:12.360 に答える
1

jQueryのドキュメントには次のように書かれています:

画像で使用する場合の load イベントの注意
事項 開発者が .load() ショートカットを使用して解決しようとする一般的な課題は、画像 (または画像のコレクション) が完全に読み込まれたときに関数を実行することです。

これには注意すべき既知の警告がいくつかあります。
-一貫
性がなく、クロスブラウザで確実
に動作しない - 画像の src が以前と同じ src に設定されている場合、WebKit で正しく 起動しない -
DOM ツリーを正しくバブルアップしない
-停止する可能性があるブラウザのキャッシュに既に存在する画像に対して起動する

他のライブラリを使用して画像をプリロードすることもできます。PreloadJSをお勧めします

于 2013-03-12T14:52:58.253 に答える