2013-06-19 34 views
1

我有一個簡單iframeiframe onLoad在轉儲文件時不會觸發?

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

其中有onload處理程序連接到它。

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

還有2個按鈕:

enter image description here

當我按下第一個按鈕(它設置一個站點(不要介意它) - 它確實警報:

enter image description here

但是,當我將它設置爲mypage(它傾倒一個圖片) - 圖片已下載但是它不會觸發onload

當我按在按鈕,將其重定向到一個網頁,其中它的代碼是:

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事件?

p.s.我爲什麼需要它?

當用戶按「下載文件」時,在客戶端 - 我顯示加載動畫和onload假設刪除「加載」動畫。

JSBIN

回答

0
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()代替Response.End(見Correct usage of Asp.Net Response.TransmitFile and Response.End()

我該如何解決這個問題,以便當圖片加載(或iframe完成)時, 它會觸發onload事件?

我認爲問題來自您的iframe內容不是html文檔或img元素。所以它不會觸發任何負載事件。

你可以有你的aspx頁面有兩種不同的行爲變化的查詢字符串參數(或只是有兩頁):

  • 一個用於圖像(比如img.aspx,一個你已經有)
  • 其中一個,說document.aspx,哪個url將被用作src屬性iframedocument.aspx建立包含img元素的整體html文檔其中srcimg.aspx

希望這將有助於