IE9,下载,关闭弹出窗口

Caf*_*eek 11 javascript internet-explorer-9

因此,在我的应用程序中,用户可以将他们的工作导出到excel.

它的工作原理是打开一个弹出窗口(window.open(...))然后父进程将数据写入表单,然后将表单发回服务器.

服务器生成文件,然后将其流回到弹出窗口,出现下载对话框.它还会使用令牌写入cookie.

此令牌对于每个下载弹出窗口都是唯一的,当窗口看到该cookie(定期检查)时,它会window.close()在用户收到文件下载提示时自行关闭.

这在IE7和IE8中运行良好

但是,因为IE9决定摆脱对话框并用信息栏替换它,所以在用户可以采取行动下载之前窗口关闭,如果他们点击它,他们就不知道何时完成而没有手动打开下载对话框.

作为临时解决方案,弹出窗口不再关闭.

但是,我希望能够为用户关闭它,因为一旦下载开始它对他们完全没用.

如何关闭此窗口并仍然能够在IE9中提醒用户他们的下载已完成且可以打开?

And*_*lad 2

不久前我也做了类似的事情。我的解决方案是摆脱window.open并改为使用Content-Disposition强制浏览器下载文档而不是打开它

更改服务器代码以在生成 Excel 文档之前插入此 HTTP 标头,然后将所有下载按钮/链接更改为普通链接,例如<a href="server/document">Download the report as Excel</a>

Content-Disposition: attachment; filename=someFilename.xls
Run Code Online (Sandbox Code Playgroud)

编辑:抱歉,我错过了五分钟渲染时间的部分。

您仍然可以使用 Content-Disposition 来实现此目的,只需少量 Javascript。生成文档时让服务器返回报告。然后只需关闭 所打开的窗口window.open,并让主窗口加载具有 Content-Disposition 标头的文档即可。