【发布时间】:2011-01-06 07:38:55
【问题描述】:
当用户点击超链接时,我会打开一个下载文件的弹出窗口。下载后,显示打开/保存对话框。我想在下载完成后关闭弹出窗口(当提示用户保存文件时)。 我试过 window.close 方法,但它不起作用,因为上下文不是弹出窗口而是打开/保存对话框。
【问题讨论】:
标签: javascript html
当用户点击超链接时,我会打开一个下载文件的弹出窗口。下载后,显示打开/保存对话框。我想在下载完成后关闭弹出窗口(当提示用户保存文件时)。 我试过 window.close 方法,但它不起作用,因为上下文不是弹出窗口而是打开/保存对话框。
【问题讨论】:
标签: javascript html
我认为您无法以编程方式控制它。这是特定于浏览器的事情,某些浏览器允许您勾选复选框以关闭窗口等。
【讨论】:
你可以做一件事:
在“文件编写代码在你的servlet或struts action中使用”之后
第一步:调用“response.flushBuffer();” 第二步:调用 response.sendRedirect("close.htm")
close.htm 在哪里:
<html>
<script>
window.close();
</script>
</html>
唯一的问题是确定下载是否完成。我不认为有一种可能的方式来做到这一点。无论如何,在下载完成之前保持弹出窗口打开有什么用。启动下载后,您只需关闭弹出窗口即可。使用下面的 JavaScript,不是吗?
pop_up= window.open("", "PopUpName");
pop_up.document.write('POPUP TEXT');
pop_up.close();
【讨论】:
浏览器习惯于自行决定是尝试下载文件还是在浏览器窗口中打开文件,具体取决于所使用的浏览器、插件和服务器设置。听起来您可能会在新窗口中打开链接,就好像浏览器要打开文件而不是下载文件一样,然后浏览器选择了下载。这会给用户留下一个下载的文件和一个您无法控制的空白窗口。
要强制下载,您应该能够将链接目标的 Content-Type 标头设置为 application/force-download。您如何执行此操作取决于您的设置,以及文件是直接下载(在这种情况下它将是服务器设置)还是通过 PHP 或 .Net(在这种情况下很容易以编程方式设置标头)。还要确保超链接没有在新窗口中打开链接的target="_blank" 属性。
【讨论】:
它是浏览器功能,您可以为此更改浏览器设置。你不应该去编程。默认情况下,如果您将在 Firefox 中下载文件,它会要求保存,但在 crome 中它不会询问。 您需要更改浏览器的设置。
【讨论】: