使用ASP.Net,JQuery和BlockUI,我试图在显示下载文件对话框后取消阻止UI。
单击导出按钮时阻止UI:
<script type="text/javascript">
$(document).ready(function(){
$('#<%= BtnExport.ClientID%>').click(function(){
$.blockUI();
});
});
</script>
在此之后,我使用:
生成文件服务器端 private void SendFileToUser(byte[] file, string contentType, string filename)
{
Response.Clear();
Response.ContentType = contentType;
Response.AppendHeader("Content-Disposition", "attachment; filename="+filename);
Response.OutputStream.Write(file,0,file.Length);
Response.OutputStream.Flush();
Response.End();
}
执行此代码后,我想取消阻止用户界面。
我考虑过不同的选择:
但这两个选项看起来都很尴尬,我认为必须有一种聪明的JavaScript方法来处理或等待文件对话框。
有什么建议吗?
答案 0 :(得分:1)
没有办法检查这个;没有像ondownloadready这样的事件。 但是有一些解决方法 http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser
答案 1 :(得分:0)
不要将文件存储在会话中,这是对资源的巨大浪费。为什么不将表单数据发布到“下载”页面,其中包含“您的文件应该立即下载...”消息。这是www.download.com等下载网站在到达download page时的热门程度。
这使用户可以通过刷新进行重试,而且您不必担心会话超时,因为当他们到达页面时,所有数据都在POST标题中。
答案 2 :(得分:0)
我使用的方法是发送一个cookie,除了文件附件,您可以使用JavaScript通过超时检测,然后取消阻止ui