我有控制器,我生成并下载文件。 当用户单击“下载”按钮时,将执行以下代码:
_statusWindow = window.open('downloadCSV', "_statusWindow");
_statusWindow.document.write('<div> Please wait while we processing your request</div>');
_statusWindow.document.title = "Downloading...";
它指向控制器downloadCSV,它生成文件(不返回任何视图) 因此,当生成文件时,新窗口打开 - 下载完成后自动下载并关闭窗口。 当我没有这一行时,这段代码工作正常:
_statusWindow.document.write('<div> Please wait while we processing your request</div>');
但我想附加此行以向用户显示消息。 有了这一行(正如我在第一个代码片段中所示),只有点击按钮TWICE才会开始下载!我不明白为什么。当我点击一次 - 它只是显示消息,没有调用控制器和生成文件,当我第二次调用它时 - 它开始下载...
任何建议,请帮助
答案 0 :(得分:1)
我怀疑在下载完成之前该消息是否保留在窗口上,请您试试下面的代码..
var win = window.open("","_statusWindow");
var html = '<html><head></head><body>Please wait while we processing your
request...</body></html>';
var iframe = win.document.createElement('iframe');
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);
iframe.onload = window.open("downloadCSV","_statusWindow");
win.document.body.appendChild(iframe);
答案 1 :(得分:1)
你可以尝试一下,我试图以iframe的形式打开下载,并在加载iframe时关闭窗口..希望它可能有用..
var win = window.open("","_statusWindow");
var html = '<html><head><title>Base</title></head><body>Please wait while
we processing your request...</body></html>';
var iframe = win.document.createElement('iframe');
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);
win.document.body.appendChild(iframe);
var iframe2 = win.document.createElement('iframe');
iframe2.src = "downloadCSV";
iframe2.onload= win.close();
win.document.body.appendChild(iframe2);