Estoy buscando más ideas sobre la mejor manera de iniciar una descarga de archivos desde Javascript.¿Iniciando una descarga de archivos que funciona bien, incluso en IE?
Best way to initiate a download? tiene un montón de buenas ideas que pueden resumirse:
- Establecer el SRC en un iframe
- Uso window.location.replace()
- Usar una página con un encabezado meta de actualización
- Utilice un window.open()
- Deje el archivo directamente salida del servidor, estableciendo el Content-Type y Content-Disposition
Todos estos enfoques funcionan bien para los navegadores con los que he estado probando, excepto para IE8. Con IE8, consigo un montón de problemas:
- El marco flotante no está funcionando debido cookies creadas por el ambiente que estoy usando. Creo que tendría que habilitar los encabezados P3P para resolver esto, pero el entorno no me permite establecer encabezados, por lo que P3P está fuera
- El window.location.replace() funciona excepto que en IE8, el la barra de dirección de la ventana cambia a la URL del archivo y la ventana subyacente está en blanco después de abrir el archivo descargado
- El enfoque de actualización de meta también funciona, pero la barra de direcciones cambia a la URL del archivo y al ventana subyacente está en blanco después de las descargas de archivos
- Estoy tratando desesperadamente de evitar window.open() a esquivar cualquier bloque emergente ker problemas
- El entorno de servidor que estoy en que no permitirá la salida del archivo en sí, al igual que usted podría hacer en, por ejemplo, objeto de respuesta de ASP.NET
ni siquiera he intentado estos métodos con IE6 o IE7, por lo que puede haber otras sorpresas allí.
Entonces, ¿alguien tiene alguna otra sugerencia para iniciar una descarga en IE, donde (1) no hay ventanas emergentes involucradas y (2) el archivo se puede guardar o abrir y (3) no se deja ninguna ventana en blanco, (3) usando solo Javascript, HTML y una URL para un archivo?
de Denver, Mike
¿Podría explicar el entorno del servidor? –
Hola Joel, Esto se está creando para ejecutarse en los servidores de Salesforce.com; tienen su propio lenguaje de programación llamado Apex. –