Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2011, 03:47
Avatar de Negora
Negora
 
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 21 años, 4 meses
Puntos: 5
Pregunta Iniciar descarga en ventana nueva falla en IE.

Hola a todos:

Tengo una duda que viene ya de muy atrás. Necesito que una página inicie una descarga de un archivo en una ventana nueva, sin una acción directa del usuario (sin un clic de ratón, por ejemplo).

En un caso así parece ser que Internet Explorer cancela la descarga para advertir al usuario, usando para ello una notificación en la parte superior. El problema es que necesito que esta descarga se inicie en una nueva ventana abierta con el método window.open () e IE, al menos en las versiones 7 y 8, la cierra antes de que el usuario pueda ni siquiera ver ese mensaje (de hecho puedo escuchar el típico sonido de alerta de ese tipo de avisos).

Una circunstancia importante para reproducir este problema es que este archivo ha de ser una descarga pura y dura y no ha de ser interceptado por un plug-in concreto. Por ejemplo, si el archivo es un documento PDF, o el plug-in se ha de encontrar desactivado, o bien la cabecera HTTP "Content-Disposition" ha de incluir la clave "attachment" (para que dicho plug-in no lo incruste en el navegador).

La razón por la que necesito usar window.open () en vez de location.href o un IFrame oculto es que uso estructura de IFrames y, cuando el usuario acepta el aviso por parte de IE, éste comete la barbaridad de recargar toda la página completa en vez del IFrame específico que llama al archivo, por lo que se pierde todo lo visible en ese momento.

Un truco que he empleado hasta ahora es abrir primero un HTML "blanco" con window.open () y que luego éste redirija a la descarga mediante JavaScript (si se hace redirección mediante cabecera HTTP estamos en las mismas). Pero claro, una vez hecha la descarga, la ventana queda abierta, porque desde JavaScript no tengo manera de saber cuándo el usuario ha comenzado la descarga.

¿Tenéis alguna idea de cómo solucionar este problema? Muchas gracias.


Código de ejemplo:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>

		<title>Test</title>

		<script type="text/javascript">
			var win = open ("test.pdf", "_blank", "");
		</script>

	</head>


	<body></body>

</html>