ExtJS在下载文件时显示“正在处理下载”
我有我的ExtJS4.2.1应用程序,其中有一个用于生成和下载PDF报告的报告部分 现在,在我的控制器中,我可以下载一个文件:ExtJS在下载文件时显示“正在处理下载”,extjs,extjs4,extjs4.1,extjs4.2,extjs-mvc,Extjs,Extjs4,Extjs4.1,Extjs4.2,Extjs Mvc,我有我的ExtJS4.2.1应用程序,其中有一个用于生成和下载PDF报告的报告部分 现在,在我的控制器中,我可以下载一个文件: onPrint: function() { Ext.core.DomHelper.append(document.body, { tag: 'iframe', id: 'downloadIframe', frameBorder: 0, width: 0,
onPrint: function() {
Ext.core.DomHelper.append(document.body, {
tag: 'iframe',
id: 'downloadIframe',
frameBorder: 0,
width: 0,
height: 0,
css: 'display:none;visibility:hidden;height:0px;',
src: '/api/report/GenerateReport'
});
}
工作正常,但有些报告需要5到10秒才能生成,因此用户可能会多次单击“打印”按钮,因为他不知道正在生成文件
如何显示掩码处理下载或其他内容,以便在文件下载之前阻止UI
谢谢。包含打印按钮的父面板应具有该属性
waitMsgTarget: true,
在按钮的处理程序函数中,在调用onPrint之前,添加以下行:
waitMsg: 'Processing download...',
希望有帮助。我最后给出的解决方案如下: A.使用Ajax调用服务器方法,该方法将生成文件,但将临时存储在服务器上。这里我显示一条等待消息 文件名是Guid 在服务器上创建文件后,我用文件名响应客户端 C.成功响应时的客户端创建一个IFrame,它的src属性指向刚刚创建的文件URL
文件已下载 这在使用Iframe下载文件时不起作用。实际上,Chrome在IFrame事件方面存在问题。它不会触发onload事件。你能共享该文件的JS代码吗?我使用了fpdf库,它工作得很好,如果您想看看我做了什么,请告诉我,我将共享这些文件