IE9,下载,关闭弹出窗口

时间:2011-11-25 17:00:59

标签: javascript internet-explorer-9

因此,在我的应用程序中,用户可以将他们的工作导出为ex​​cel。

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

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

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

这在IE7和IE8中非常有用

然而,因为IE9决定摆脱对话并用信息栏替换它,窗口关闭然后用户可以采取行动下载,如果他们点击它,他们永远不知道什么时候完成无需手动打开下载对话框。

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

但是,我希望能够为用户关闭它,因为一旦下载开始,它就完全没用了。

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

3 个答案:

答案 0 :(得分:3)

使用iframe - 它们的效果更好,您可以更好地控制。只需设置display: none;

即可

答案 1 :(得分:2)

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

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

Content-Disposition: attachment; filename=someFilename.xls
编辑:对不起,我错过了五分钟渲染时间的部分。

您只需使用一些Javascript即可使用Content-Disposition。生成文档时让服务器报告回来。然后关闭window.open打开的窗口,让主窗口加载包含Content-Disposition标题的文档。

答案 2 :(得分:-1)

您可以执行HTML注释,使关闭弹出窗口的行仅影响非IE9的浏览器... http://www.unintentionallyblank.co.uk/2006/09/19/if-internet-explorer-then-do-something-else-a-how-to/

<!--[If lt IE 9]> 
    <script>
        //your code here
    </script>
<![endif]-->

应该有效。这个如果使9之前的所有版本的IE做你将放在其中的脚本。这必须是HTML部分。