Herunterladen einer dynamischen CSV im Internet Explorer

8

Der folgende Code funktioniert sowohl in FireFox als auch in Chrome, aber nicht in IE. Im Wesentlichen habe ich ein JSON-Objekt, das in ein Array und dann in ein CSV-Format konvertiert wird, wenn ich auf die Schaltfläche in FF oder Chrome die Datei heruntergeladen wird oder das Speichern unter Fenster öffnet, aber in IE Ein neuer Tab öffnet sich. In einer perfekten Welt würde der IE nicht existieren, aber in der realen Welt müssen wir es zum Laufen bringen, lol.

%Vor%

BTW, ich benutze IE 11 in Windows 8, um dies zu testen, wenn das einen Unterschied macht.

Danke allen!

    
user2797021 02.12.2014, 19:26
quelle

2 Antworten

30

Das ist meine Lösung, falls jemand anders nach einer Lösung sucht. jetzt funktioniert es mit FF, Chrome und IE

%Vor%

Jetzt muss ich nur herausfinden, ob es eine Möglichkeit gibt, den Speicher als Popup zu öffnen, anstatt die Datei automatisch zu speichern. Wenn jemand die Antwort weiß, bitte teilen. Für jetzt müssen meine Benutzer diese Funktionalität verwenden.

Danke für all die tollen Antworten, ihr seid großartig.

    
user2797021 03.12.2014, 13:27
quelle
15

Internet Explorer lässt Daten-URIs aus Sicherheitsgründen nicht als navigierbaren Inhalt zu. Um zu verstehen, warum, möchte ich Sie ermutigen, das kurze Whitepaper von Henning Klevjer zum Thema Phishing nach Daten-URI Zusammenfassend hat sich gezeigt, dass dies Möglichkeiten eröffnet, mit denen der Endnutzer dazu gebracht werden kann, sensible Informationen aufzugeben.

Auch aus der Datenprotokoll-Dokumentation auf MSDN :

  

Aus Sicherheitsgründen sind Daten-URIs auf heruntergeladene Ressourcen beschränkt. Daten-URIs können nicht zum Navigieren, zum Erstellen von Skripts oder zum Füllen von Rahmen- oder Iframe-Elementen verwendet werden.

Um ehrlich zu sein, fühlt sich die Übergabe eines Daten-URI an window.open etwas hacky an. Stattdessen sollten Sie eine API verwenden, um den Prozess zu verarbeiten (sofern vorhanden). Wenn Sie eine Datei auf den Computer des Benutzers in Internet Explorer herunterladen möchten, sollten Sie navigator.msSaveBlob verwenden. oder navigator.msSaveOrOpenBlob .

Als Beispiel betrachten Sie Folgendes:

%Vor%     
Sampson 02.12.2014 19:36
quelle