因此,在我的应用程序中,用户可以将他们的工作导出到excel。
它的工作方式是打开一个弹出窗口(window.open(...)),然后父母将数据写入表单,然后将表单发送回服务器。
服务器生成该文件,并将其向下传输到弹出窗口,在该窗口中会出现下载对话框。它还使用令牌写入cookie。
此令牌对于每个下载弹出窗口都是唯一的,当窗口看到该cookie (定期检查)时,它会在用户收到文件下载提示时以window.close()关闭自身。
这在IE7和IE8中非常有效
但是,由于IE9决定删除该对话框,并将其替换为infobar,因此在用户可以执行下载操作之前窗口就会关闭,如果用户单击了它,如果不手动打开downloads对话框,他们永远不会知道什么时候下载完成。
作为临时解决方案,弹出窗口不再关闭。
然而,我希望能够为用户关闭它,因为一旦他们的下载开始,对他们来说就完全没有用了。
如何在关闭此窗口的同时仍能在IE9中提醒用户他们的下载已完成并且可以打开?
发布于 2011-12-06 18:29:46
就在不久前,我做了类似的事情。我的解决方案是去掉window.open,转而使用Content-Disposition强制浏览器下载文档,而不是打开。
在生成Excel文档之前,更改服务器代码以插入此header,然后将所有下载按钮/链接更改为普通链接,如<a href="server/document">Download the report as Excel</a>
Content-Disposition: attachment; filename=someFilename.xls编辑:对不起,我错过了5分钟渲染时间的部分。
只需少量的Javascript,您仍然可以使用Content-Disposition。在生成文档时让服务器返回报告。然后关闭window.open打开的窗口,让主窗口加载带有Content-Disposition头的文档。
发布于 2011-12-01 00:11:01
使用iframe -他们工作得更好,你有更多的控制。只需设置display: none;
发布于 2011-12-01 00:13:20
你可以做一个超文本标记语言的注释,使关闭弹出窗口的代码行只影响非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]-->应该行得通。这会使IE 9之前的所有版本都执行您要放入其中的脚本。这必须在HTML部件中。
https://stackoverflow.com/questions/8272177
复制相似问题