Foros del Web » Programando para Internet » Javascript »

Iniciar descarga en ventana nueva falla en IE.

Estas en el tema de Iniciar descarga en ventana nueva falla en IE. en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 22/03/2011, 03:47
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 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>
  #2 (permalink)  
Antiguo 22/03/2011, 04:12
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
Exclamación Respuesta: Iniciar descarga en ventana nueva falla en IE.

Se me olvidó hacer varios apuntes:
  • El problema de IE es que cancela la descarga cuando muestra el aviso, en vez de "pausarla" o comenzarla en segundo plano hasta que el usuario tome una decisión (caso de Firefox). Es por eso que se produce el cierre inmediato de la ventana, porque se considera que la descarga ha finalizado para bien o para mal. Cierto es que esta manera de actuar es más segura, pero está mal aplicada.
  • Como ya comentaba en el mensaje anterior, este comportamiento se da exclusivamente cuando la descarga se inicia indirectamente, sin acción del usuario. ¿Por qué hacerlo así? Porque en mi caso la descarga se ejecuta tras una negociación AJAX que sí inicia manualmente el usuario. Pero al ser una comunicación asíncrona, IE lo considera como una acción ajena a éste.
  • Usando la estrategia de abrir primero un HTML he probado a aplicar el cierre tras X segundos. Y la verdad es que funciona correctamente, pero es un modo de poca confianza, porque se desconoce lo que tardará el usuario en aceptar el aviso de IE. Pero algo es algo...
  #3 (permalink)  
Antiguo 20/09/2011, 06:57
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Iniciar descarga en ventana nueva falla en IE.

Estimado, como resolviste el problema? ya q me encuentro en la misma situacion

Etiquetas: descarga, explorer, falla, iexplorer, internet, ventanas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.