2010-12-07 20 views
8

Los usuarios completan un formulario. Con un formulario válido, hacen clic para descargar un archivo. Me gustaría poder redirigirlos a otra página (por ejemplo, page2.html) E iniciar una descarga.Descargar un archivo y redirigir ... o alternativa

No puedo iniciar la descarga en page2.html porque la mayoría de los navegadores marcarán advertencias de seguridad si no se hace clic directamente en un enlace de descarga.

¿Cómo se logra algo así usando javascript o jquery? Obviamente, el siguiente no funciona, sino que está destinado para fines ilustrativos:

document.getElementById("foo").onclick = function(){ 
    window.location = "/download.exe"; 
    window.location = "/page2.html"; 
} 

Respuesta

10

Puede usar un enlace al archivo y onclick para activar "ir a la siguiente página en breve".

<script> 
function thanks() { 
    setTimeout(function() { 
     document.location.pathname = "page2.html"; 
    }, 1000); 
} 
</script> 

<a href="file.exe" onclick="thanks()">Download now!</a> 
+0

¡Está bien! Eso funciona para IE al menos. En FF, Chrome y Safari, los usuarios no tienen tiempo suficiente para hacer clic en el campo "Permitir". Pero como dijiste en tu comentario anterior, puede que tenga que vivir con eso. Posiblemente use esto para mis usuarios de IE. – Kyle

+0

¿Acaban de cerrar el mensaje "descargar" cuando intenta ir a otra cosa? Extraño. –

+0

Sí, el mensaje de descarga desaparece (excepto en IE). – Kyle

3

Puede iniciar la descarga en la página 2 por tener page2.html "cambiar" su ubicación (a la URL de descarga) una vez que se carga la página:

$(function() 
{ 
    setTimeout(function() 
    { 
     window.location.pathname = '/download.exe'; 
    }, 5000); // download the file in 5 seconds 
}); 

Estoy bastante seguro (aunque no al 100%) de que no se activará una advertencia de seguridad.

+0

He probado esto en Safari 5, Chrome 8, FF 3.6 e IE7, IE8. Para Internet Explorer, el comportamiento de descarga es diferente (que si hace clic directamente en un enlace de descarga). En IE, mensaje "Para ayudar a proteger su seguridad ..." mientras que si hace clic directamente solo abre un archivo de guardar. – Kyle

+1

@Emile: ese va a ser el caso sea lo que sea que hagas; Es un comportamiento normal con el que tendrás que vivir. Es por eso que los sitios a menudo tienen "si esta descarga no comienza, haga clic aquí" y cosas por el estilo. Creo que es normal iniciar la descarga cuando la página se carga también (sin ningún problema adicional). –

+0

a side-note .... y esto es muy extraño, pero en Safari 5 for Chrome, window.location.pathname produce resultados inesperados ... Safari intenta "buscar" su ruta de acceso con el motor de búsqueda predeterminado. – Kyle