2012-06-11 168 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

相关问题