0

ページをレンダリングした後、次のようにimgタグのsrcをjavascriptから変更した場合:

function changeImage(){
  img.src = 'getImage?imgId=232132'; //getImage is calling doGet() Method of Servlet   with  response content type "image/jpeg"
}

これは非同期呼び出しを行い、イメージをロードしますか?

4

4 に答える 4

2

はい。DOMの変更によってトリガーされたコンテンツの読み込みはJavaScriptをブロックしません。

于 2012-10-29T13:49:19.820 に答える
2

はい、呼び出しは非同期です。ただし、画像がキャッシュにあるために実際には遠隔呼び出しではない場合を除きます(この場合、スクリプトの次の行が実行される前に画像が読み込まれます)。

終了時に通知を受け取りたい場合は、次のようにします。

img.onload = function(){alert('loaded!')};
img.src = 'getImage?imgId=232132';
于 2012-10-29T13:49:51.577 に答える
1

最も簡単な答えは「はい」です。非同期で発生します。ただし、それだけではありません。

javascript中に行うことは、表示するページのモデル(DOM)のみを変更するという考え方です。ブラウザは、ページがモデルの新しい仕様に従ってレンダリングされていることを確認する必要があります。基本的に、この場合は画像のダウンロードが含まれます。ただし、ブラウザがこのレンダリングを行う方法はブラウザに任されていますが、JavaScriptがブロックされることはありません。

実際、多くの主要なブラウザがあなたが説明しているケースを処理するのを見てきましたが、実際には画像の非同期リクエストがありますが、JavaScriptの実行が完了するまではありません。つまり、ビジーウェイト()でフォローアップした場合while (true) {}、画像はまったく読み込まれません。ただし、を変更した後、1秒間のタイムアウトイベントを設定する場合src画像の場合、ページは新しいsrcを解釈し、画像の非同期リクエストを実行しますが、秒が経過するまでに画像の読み込みが完了したかどうかは保証されません。ただし、他のブラウザではこれが異なる場合があり、真であることがわかっている動作以外の動作に依存しないことをお勧めします(JavaScriptがブロックされないこと、および読み込みが完了したら何かを実行したい場合は、適切なDOMを使用する必要があります)。

于 2012-10-29T13:59:40.383 に答える
-1

ファイルのヘッダーを設定してください。phpを使用する場合は、次のことを試してください。

<?php
header("Content-type: image/jpeg");
?>

幸運を

于 2012-10-29T14:01:49.010 に答える