2010-01-18 16 views
5

Cuando el usuario hace clic en un hipervínculo, estoy abriendo una ventana emergente que descarga un archivo. Después de la descarga, muestra el cuadro de diálogo abrir/guardar. Quiero cerrar la ventana emergente una vez que se realiza la descarga (cuando se solicita al usuario que guarde el archivo). He intentado con el método window.close, pero no funciona ya que el contexto no es la ventana emergente sino el cuadro de diálogo abrir/guardar.Cerrar la página emergente del navegador después de descargar el archivo

Respuesta

5

Creo que no puede controlarlo programáticamente. Esto es algo específico del navegador donde algunos navegadores le permiten marcar una casilla de verificación para cerrar la ventana y así sucesivamente.

+0

Sí. Algunos usuarios prefieren que esa ventana se quede, por ejemplo. para que puedan ejecutar 'Ejecutar' desde allí después de la descarga; así como lo prefieran y no intentes interferir con eso (no es que puedas). A todos los que no les guste ese comportamiento, desmarcarán la casilla para que desaparezca. – bobince

1

Los navegadores tienen la costumbre de decidir por sí mismos si desean descargar un archivo o abrirlo dentro de la ventana del navegador, dependiendo del navegador utilizado, los complementos y la configuración del servidor. Parece que abre el enlace en una nueva ventana, como si el navegador abriera el archivo en lugar de descargarlo, y luego el navegador optó por la descarga. Esto deja al usuario con un archivo descargado y una ventana en blanco sobre la que no tiene control.

Para forzarlo a descargar, debe poder establecer el encabezado Content-Type para el destino del enlace a la aplicación/descarga forzada. La forma en que haga esto dependerá de su configuración, y de si el archivo se descarga directamente (en cuyo caso será una configuración de servidor) o mediante PHP o .Net (en cuyo caso es fácil establecer programáticamente el encabezado). También asegúrese de que el hipervínculo no tenga un atributo target="_blank" que abra el enlace en una nueva ventana.

+0

Gracias Karl. El problema no es descargar el archivo, sino cerrar la ventana emergente después de la descarga. – Ankit

+1

Con el encabezado Content-Type correcto, y sin target = "_ blank" (o window.open), la ventana emergente ni siquiera debería abrir en primer lugar. –

+0

Quiero abrir la ventana emergente y mostrar un mensaje personalizado en esa ventana. Pero una vez que se completa la descarga, quiero que se cierre esa ventana. – Ankit

2

se puede hacer una cosa:

después de que el "código de la escritura de archivos en su servlet o puntales uso acción"

Paso 1: llaman "response.flushBuffer();" Paso 2: llamar response.sendRedirect ("close.htm")

donde close.htm es:

<html> 


<script> 


window.close(); 

</script> 

</html> 

El único problema es identificar si la descarga se ha completado. No creo que haya una forma posible de hacerlo. De todos modos, hay algún uso de mantener abierta la ventana emergente hasta que se complete la descarga. Simplemente puede cerrar la ventana emergente una vez que se inicia la descarga. Usando el JavaScript debajo, ¿no?

pop_up= window.open("", "PopUpName"); 
pop_up.document.write('POPUP TEXT');  
pop_up.close(); 
0

Es la funcionalidad del navegador, puede cambiar la configuración del navegador para eso. No deberías ir por la programación. De forma predeterminada, si descargas un archivo en Firefox, pides guardarlo, pero en crome, no pregunta. Necesita cambiar la configuración de su navegador.

Cuestiones relacionadas