下载文件后关闭浏览器弹出页面

问题描述:

当用户点击超链接时,我打开一个下载文件的弹出窗口。下载后,显示打开/保存对话框。我想在下载完成后关闭弹出窗口(当提示用户保存文件时)。 我试过window.close方法,但它不工作,因为上下文不是弹出窗口,而是打开/保存对话框。下载文件后关闭浏览器弹出页面

我认为你不能以编程方式控制它。这是浏览器特定的事情,其中​​一些浏览器允许您在复选框上打勾以关闭窗口等等。

+0

是的。一些用户喜欢将该窗口粘在一边,例如。所以他们可以在下载后运行'运行';他们更喜欢它,你不应该试图干涉(不是你可以)。其他所有不喜欢这种行为的人都会挑起盒子让它消失。 – bobince 2010-01-18 14:57:55

浏览器有自己决定是否尝试下载文件或在浏览器窗口内打开文件的习惯,具体取决于使用的浏览器,插件和服务器设置。这听起来像你可能会在新窗口中打开链接,就好像浏览器打开文件而不是下载文件,然后浏览器选择了下载。这使用户无法控制下载的文件和空白窗口。

要强制下载,您应该能够为应用程序/强制下载链接的目标设置Content-Type标头。你如何做到这一点将取决于你的设置,以及文件是否直接下载(在这种情况下,它将是一个服务器设置)或通过PHP或.Net(在这种情况下,很容易以编程方式设置标题)。还要确保超链接没有在新窗口中打开链接的target="_blank"属性。

+0

谢谢卡尔。问题不在于下载文件,而是在下载后关闭弹出窗口。 – Ankit 2010-01-18 10:51:04

+1

使用正确的Content-Type标题,并且没有target =“_ blank”(或window.open),那么弹出窗口甚至不应该首先打开。 – 2010-01-18 11:45:56

+0

我想打开弹出窗口并在该窗口中显示自定义消息。但是一旦下载完成,我希望该窗口关闭。 – Ankit 2010-01-18 11:53:12

你可以做一两件事:

步骤1中的 “在你的servlet或Struts操作使用的文件编写代码” 后

:所谓的 “response.flushBuffer();” 第2步:调用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(); 

这是浏览器功能,您可以更改浏览器设置。你不应该去编程。默认情况下如果你将下载文件在Firefox中它要求保存,但在Crome这是不问。 您需要更改浏览器的设置。