Sto cercando altre riflessioni sul modo migliore per avviare un download di file da Javascript.Iniziare un download di file che funziona bene, anche in IE?
Best way to initiate a download? ha un sacco di buone idee, che possono essere riassunti:
- Impostare lo src in un iframe
- Usa window.location.replace()
- Utilizzare una pagina con un colpo di testa meta refresh
- Utilizzare un window.open()
- Lasciate che il file direttamente output del server, l'impostazione del Content-Type e Content-Disposition
Tutti questi approcci funzionano bene per i browser con cui ho eseguito il test, ad eccezione di IE8. Con IE8, ho un sacco di problemi:
- L'IFRAME non funziona a causa di cookie impostati dall'ambiente che sto utilizzando. Penso che avrei bisogno di abilitare le intestazioni P3P per risolvere questo problema, ma l'ambiente non mi consente di impostare le intestazioni, quindi P3P è fuori
- Il window.location.replace() funziona tranne che in IE8, il la barra degli indirizzi della finestra cambia all'URL del file e la finestra sottostante è vuota dopo l'apertura del file scaricato
- L'approccio di meta refresh funziona anche, ma la barra degli indirizzi cambia l'URL del file e il la finestra sottostante è vuota dopo il download del file
- Sto disperatamente cercando di evitare window.open() a schivare qualsiasi blocco popup ker problemi
- L'ambiente del server sono in non vi permetterà di emettere il file stesso, come si potrebbe fare nel dire, oggetto Response di ASP.NET
non ho nemmeno provato questi metodi con IE6 o IE7, quindi potrebbero esserci altre sorprese lì.
Così chiunque ha altri suggerimenti per avviare un download in IE, dove (1) non sono presenti popup e (2) il file può essere salvato o aperto e (3) non viene lasciata alcuna finestra vuota, (3) usando solo Javascript, HTML e un URL per un file?
Denver Mike
Potresti elaborare l'ambiente del server? –
Ciao Joel, Questo è in fase di esecuzione per l'esecuzione sui server Salesforce.com - hanno il proprio linguaggio di programmazione chiamato Apex. –