1

次のような状況があります

サードパーティがホストするいくつかの外部画像をロードする必要があります。URL の例は次のとおりです。

http://externaldomain.com/img/a/b/someimage.jpg

ただし、1 つの画像を読み込むのに最大 15 秒かかる場合があります。(私が知っているクレイジー)、jQueryを使用してこれらの画像を非同期にロードすることを考えています。ここで行き詰まっています。次の2つの方法を試しました。

var img = new Image();            
$(img).load(function () {                                
    containerForImg.removeClass('loading-image').append(this);
})

.attr('src', imgFullPath)   
.attr('alt', imgAltText); 

リクエストが完了する前にすべての画像を待機し続けるため、上記のコードは画像を非同期的にロードしないと思います。

2 つ目の方法は

ジェネリック ハンドラー (.ASHX) を作成して .NET からクラスを使用して画像をダウンロードし、WebRequestこのWebResponseハンドラーを$.ajax()jQuery メソッドで呼び出すことですが、画像が多いと画面が応答しなくなります。ハンドラーへのリクエストが非同期であることは確認できますが、ハンドラー内の呼び出しが非同期なのか気になります。

結論は、どちらの方法も最良の結果をもたらさないということです。では、外部画像を非同期的にロードする最良の方法は何ですか? jQuery の使用だけに限定されているわけではありません。純粋な ASP.NET ソリューションで問題ありません。

4

1 に答える 1

0

jquery の .load() 関数が Image() オブジェクトで使用するように設計されているかどうかはわかりません。ただし、非常に少ない作業で自分で行うことができます。

var img = new Image()
img.onError = function(){
    //error handling here
}
img.onLoad = function(){
    //success
    containerForImg.removeClass('loading-image').append($(img));
}
img.onAbort = function(){
    //user clicked stop
}
img.src = "http://example.com"   //loading begins NOW!
于 2010-12-07T09:46:56.627 に答える