2012-06-11 217 views
1

我使用iframe從單擊按鈕時從我的web應用程序下載文件。如何知道iframe已完成加載?

這裏是我的代碼:

iframe = document.createElement("iframe"); 
    iframe.src = "Report/ExportFile.aspx"; 
    iframe.style.display = "none"; 
    document.body.appendChild(iframe); 

我想調用父頁面(包含iframe中的一個)的功能,阻止我加載動畫。

我需要知道iframe何時完成加載,並且保存/打開對話框彈出以停止它。

我試圖停止動畫內部iframe.onload =函數(){//關閉}, 但問題是,在iframe頁面加載內我有這樣的代碼:

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
    Response.AddHeader("content-disposition", "attachment; filename=ExcelDemo.xlsx"); 
    Response.BinaryWrite(pck.GetAsByteArray()); 
    Response.Flush(); 
    Response.End(); 

所以頁面執行終止。

有沒有人有解決方案,我怎麼知道iframe加載?

回答

1

我想你需要得到一些涉及客戶端腳本:

$("#iFrameId").load(function(){ 
    // Do something, probably an AJAX request in your case 
}); 
+0

與它的問題是,此代碼從未命中,因爲Response.End()停止頁面的執行。 – Inbal

+0

...這可以防止負載觸發....我同意@Inbal .....你找到了解決方案嗎? –

-2

,你可以看到這一點,jQuery的iframeloaded。

function iframeLoaded() { alert("Iframe loaded!"); }

祝您好運!

0

一個解決方案是在iframe中有一個方法,當iframe加載完成時可以調用該方法。在此方法中,調用父頁面的方法:

var iFrameLoaded = function() { 
    parent.stopLoadingAnimation(); 
}; 

要繼續在iframe的頁面加載代碼後加載頁面,刪除到Response.End(),以便將繼續執行。

+0

感謝您的回覆。我無法刪除Response.End,因爲導出文件過程不會完成。你有任何其他想法如何解決它? – Inbal

相關問題