1

私は単純なものを持っていますiframe

 <iframe class="ifr" src="about:blank"></iframe>

onloadそれにハンドラーが接続されています。

$(".ifr").on('load',function (){
 alert("iframe loaded")
});

2 つのボタンもあります。

ここに画像の説明を入力

最初のボタンを押すと(サイトに設定されます(どちらを気にする必要はありません)-アラートが表示されます:

ここに画像の説明を入力

ただし、mypage(画像をダンプする)に設定すると、画像ダウンロードされますonload.

2 番目のボタンを押すと、コードが次のページにリダイレクトされます。

 Response.Clear();
 Response.AddHeader("content-disposition", "attachment;filename=/images/about_us_bkg.jpg");
 Response.AddHeader("content-length", File.ReadAllBytes(Server.MapPath("~/images/about_us_bkg.jpg")).Length.ToString());
 Response.TransmitFile(Server.MapPath("~/images/about_us_bkg.jpg"));
 Response.End();

に関係していると思いますResponse.End();

質問 :

  • なぜ(あるとすれば)それが影響を受けるのResponse.Endですか?ブラウザが応答を送信したことを意味します(画像として)....そうですか?

  • 画像が読み込まれる(またはiframeが完了する)ときにonloadイベントが発生するようにするにはどうすればよいですか?

psなぜそれが必要なのですか?

ユーザーが「ファイルのダウンロード」を押すと、クライアント側で読み込みアニメーションを表示しonload、「読み込み」アニメーションを削除するとします。

JSBIN

4

1 に答える 1

1
Why (if ever) it is affected by Response.End ? I mean the browser 
did send a response ( as a picture) , so the request is completed ....no?

Response.End に関連しているとは思いません (Response.End を削除しても機能しない場合を除きます)Context.ApplicationInstance.CompleteRequest()の代わりに使用できます ( Asp.Net Response.TransmitFile および Response.End() の正しい使用法をResponse.End参照)

画像が読み込まれる(またはiframeが完了する)ときにonloadイベントが発生するようにするにはどうすればよいですか?

問題は、iframe コンテンツが html ドキュメントまたは img 要素ではないという事実にあると思います。そのため、load イベントはトリガーされません。

aspx ページに、クエリ文字列パラメーターで異なる 2 つの異なる動作を持たせることができます (または 2 つのページだけを持たせることもできます)。

  • 画像を提供するもの(既に持っているimg.aspxなど)
  • 1つ、たとえばdocument.aspx、どのURLがsrcあなたの属性として使用されますiframedocument.aspxは、 img.aspxsrcになるimg 要素を含む HTML ドキュメント全体を構築します。

これが役立つことを願っています

于 2013-06-19T09:16:42.780 に答える