___ qstntxt ___

Mit den folgenden Codezeilen kann ich eine Datei in der Antwort eines Ajax-Anrufs in Firefox, Chrome, Opera herunterladen. Im IE wird das %code% -Attribut %code% nicht unterstützt. Daher funktioniert das unten in IE nicht.

HTML:

%Vor%

JavaScript:

%Vor%

Welche Optionen hätte ich, um das gleiche Verhalten im IE zu erreichen?

    
___ answer25179390 ___

IE unterstützt %code% tag .

Es gibt einen hässlichen Hack, den Sie jedoch verwenden können.

  • Erstellen Sie eine unsichtbare %code% :

    %Vor%
  • Schreiben Sie Ihre Daten in die %code% : iframe:

    %Vor%
  • Verwenden Sie execCommand , um die Datei zu speichern (eigentlich , um den Dialog Speichern unter aufzurufen):

    %Vor%

Beachten Sie, dass %code% in IE11 nicht funktioniert. Ich weiß, dass es nahezu unmöglich ist, den Browser einwandfrei zu erkennen. Sie können dies jedoch als Sicherungsroutine versuchen, wenn das Speichern der Datei in Ihrem Code fehlschlägt.

    
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ answer25280856 ___

Ich denke, das hängt damit zusammen, dass %code% nicht von allen Browsern speziell für %code% -Anker unterstützt wird, also können Sie stattdessen folgenden Code versuchen,

%Vor%     
___ answer35014876 ___

IE unterstützt weder das Navigieren zu einem Daten-URI noch das Attribut %code% . Sie können %code% verwenden, um die Datei für IE 10+ zu speichern.
Sie können %code% überprüfen und IE-spezifischen Code schreiben, andernfalls den vorhandenen Code verwenden, um die Datei zu speichern.
Sie können folgenden Link für weitere Details überprüfen: Dateien lokal speichern mit Blob und msSaveBlob

    
___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jQuery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ tag123internetexplorer ___ Internet Explorer (üblicherweise abgekürzt IE oder MSIE) ist ein von Microsoft entwickelter Webbrowser, der Teil von Microsoft Windows ist. ___ tag123html ___ HTML (Hyper Text Markup Language) ist die Standard-Auszeichnungssprache, die zum Strukturieren von Webseiten und zum Formatieren von Inhalt verwendet wird. HTML beschreibt die Struktur einer Website semantisch zusammen mit Hinweisen für die Präsentation, wodurch sie eine Markup-Sprache statt einer Programmiersprache wird. Die neueste Revision der HTML-Spezifikation ist HTML5.2. ___ answer25253060 ___

Kann ich Punkte verwenden, dass das Download-Attribut in Chrome und Firefox unterstützt wird?

IE & lt; 10:

Befehl Speichern als mit execCommand kann den Trick machen, indem der Inhalt des Elements herunterladbar gemacht wird. p>

Nachteile:

  • Probleme in einigen Versionen von IE unter Win7 [Ich weiß nicht, ob es hier] repariert wurde
  • Benötigen Sie ein DOM-Element, das Daten enthält

IE & gt; = 10

Mit msSaveBlob können Sie Blob oder Datei speichern durch Senden dieser Header:

%Vor%

Überprüfen Sie Dateien lokal mit Blob und msSaveBlob speichern

Nachteile:

  • Brauchen Sie einen Blob zu definieren

Andere Browser

Wenn Sie all das nicht selbst implementieren möchten, können Sie FileSaver.js mit einer netten Bibliothek speichern generierte Dateien auf Client-Seite. Es unterstützt Firefox, Chrome, Chrome für Android, IE 10+, Opera und Safari. Für IE & lt; 10 gibt es eine Verzweigung der Bibliothek, die saveTextAs hinzufügt, um Textdateien zu speichern (.htm, .html , .txt)

Browserübergreifende Lösung

Ein serverseitiges Skript, das Dateinamen, Daten, Meme-Typ erhält und dann die Datei mit dem Header %code%

sendet     
___

8

Mit den folgenden Codezeilen kann ich eine Datei in der Antwort eines Ajax-Anrufs in Firefox, Chrome, Opera herunterladen. Im IE wird das href -Attribut download nicht unterstützt. Daher funktioniert das unten in IE nicht.

HTML:

%Vor%

JavaScript:

%Vor%

Welche Optionen hätte ich, um das gleiche Verhalten im IE zu erreichen?

    
steve 04.08.2014, 14:45
quelle

4 Antworten

17

Kann ich Punkte verwenden, dass das Download-Attribut in Chrome und Firefox unterstützt wird?

IE & lt; 10:

Befehl Speichern als mit execCommand kann den Trick machen, indem der Inhalt des Elements herunterladbar gemacht wird. p>

Nachteile:

  • Probleme in einigen Versionen von IE unter Win7 [Ich weiß nicht, ob es hier] repariert wurde
  • Benötigen Sie ein DOM-Element, das Daten enthält

IE & gt; = 10

Mit msSaveBlob können Sie Blob oder Datei speichern durch Senden dieser Header:

%Vor%

Überprüfen Sie Dateien lokal mit Blob und msSaveBlob speichern

Nachteile:

  • Brauchen Sie einen Blob zu definieren

Andere Browser

Wenn Sie all das nicht selbst implementieren möchten, können Sie FileSaver.js mit einer netten Bibliothek speichern generierte Dateien auf Client-Seite. Es unterstützt Firefox, Chrome, Chrome für Android, IE 10+, Opera und Safari. Für IE & lt; 10 gibt es eine Verzweigung der Bibliothek, die saveTextAs hinzufügt, um Textdateien zu speichern (.htm, .html , .txt)

Browserübergreifende Lösung

Ein serverseitiges Skript, das Dateinamen, Daten, Meme-Typ erhält und dann die Datei mit dem Header Content-Disposition: attachment; filename=FILENAME

sendet     
Issam Zoli 11.08.2014 21:54
quelle
2

IE unterstützt download tag .

Es gibt einen hässlichen Hack, den Sie jedoch verwenden können.

  • Erstellen Sie eine unsichtbare iframe :

    %Vor%
  • Schreiben Sie Ihre Daten in die document : iframe:

    %Vor%
  • Verwenden Sie execCommand , um die Datei zu speichern (eigentlich , um den Dialog Speichern unter aufzurufen):

    %Vor%

Beachten Sie, dass execCommand in IE11 nicht funktioniert. Ich weiß, dass es nahezu unmöglich ist, den Browser einwandfrei zu erkennen. Sie können dies jedoch als Sicherungsroutine versuchen, wenn das Speichern der Datei in Ihrem Code fehlschlägt.

    
Krumia 07.08.2014 09:52
quelle
2

Ich denke, das hängt damit zusammen, dass anch.get(0).click(); nicht von allen Browsern speziell für hidden -Anker unterstützt wird, also können Sie stattdessen folgenden Code versuchen,

%Vor%     
Dharmesh Patel 13.08.2014 07:53
quelle
1

IE unterstützt weder das Navigieren zu einem Daten-URI noch das Attribut download . Sie können navigator.msSaveBlob verwenden, um die Datei für IE 10+ zu speichern.
Sie können window.navigator.msSaveBlob überprüfen und IE-spezifischen Code schreiben, andernfalls den vorhandenen Code verwenden, um die Datei zu speichern.
Sie können folgenden Link für weitere Details überprüfen: Dateien lokal speichern mit Blob und msSaveBlob

    
Amjad Aziz 26.01.2016 13:26
quelle