Ich arbeite seit ein paar Monaten an einem Projekt und ich stehe kurz vor dem Ende. Einer der letzten Schritte besteht darin, eine Datei bereitzustellen, die mit Informationen gefüllt wird, die durch Aktionen des Benutzers während ihrer Sitzung erzeugt wurden. Can I write files with HTML5/JS? und die Antwort von Ecmanaut hat mich sehr nah gebracht, da er zwei Methoden zur Verfügung stellte, eine in reinem html5 und eine mit JavaScript.HTML5 JavaScript Download Attribut
Ich hatte zuerst die JavaScript-Methode verwendet, die nur in Chrome funktionieren würde, nicht in Mozilla oder IE. Also habe ich die reine html5-Methode in Kombination mit etwas alternativem JavaScript verwendet, um sie auf die Seite zu kopieren, so dass sie klickbar war.
document.getElementById('download').innerHTML = '<a id="save" download="earth.txt" href="data:text/plain,mostly harmless and a bit more">Save</a>';
Dieser Code erstellt eine Datei, die heruntergeladen wird, aber nicht die Newline enthalten, die der Artikel sagte, war ‚ ‘. Also habe ich gesucht, um zu sehen, welche anderen Zeichencodes erkannt werden können. http://en.wikipedia.org/wiki/Newline hat mir viele mögliche Möglichkeiten zur Verfügung gestellt, keine, die ich versucht habe, haben funktioniert. Die, die ich versucht habe, sind: '& # 10', ' ', '& # 13', ' ', '\ r \ n', '\ r', '\ n', '\ cr', ' \ c \ r ', 0x0D, 0x0A, 0c0D0A. In vielen Fällen wurde die neue Zeile entfernt und nichts würde erscheinen.
Beim Testen des obigen Codes funktioniert es in Mozilla und Chrome (minus der Newline), aber das Ergebnis in IE ist anders. Wenn Sie auf den Link "Speichern" klicken, wird die URL tatsächlich als Seite mit den Dateninhalten angezeigt.
Während das Projekt akzeptabel sein könnte, ohne dass diese Funktion funktioniert, würde ich sehr gerne arbeiten, nachdem ich so viel Zeit und Mühe damit verbracht habe und so nah gekommen bin. Ich muss das auch in Safari testen, aber ich habe noch keine Tests in diesem Browser durchgeführt. Browser-Unterstützung erforderlich von den wichtigsten zu den wenigsten ist wie folgt: Mozilla, Chrome, Safari, IE. Wenn möglich, möchte ich eine browserspezifische Codierung vermeiden.
Ich sollte auch erwähnen, dass wie in der ersten Link, ich möchte nicht an einen Server senden, um den Download zu haben, ich brauche es lokal auf der Client-Seite ohne Server-Interaktion zu arbeiten.
Also, um zusammenzufassen, muss ich zumindest die Newline für die Datei arbeiten, so dass Mozilla und Chrome beide voll funktionsfähig sind. Und wenn möglich, einen Weg, um die Datei auch im IE arbeiten zu lassen.
Bearbeiten: 3. November 2014 13:40 Uhr Ortszeit Ich habe versucht, die vorgeschlagene Bearbeitung von maths4js über meine Angebote ändern und der Vorschlag hat nicht funktioniert. Ich wurde darauf aufmerksam, dass das Einreichen einer größeren Beispielseite Code eine hilfreiche Idee wäre. Es wurde auch vorgeschlagen, dass ich schaue, um zu sehen, welche Browser diese Funktion unterstützen http://caniuse.com/#feat=download und es scheint, dass IE und Safari nicht, so werde ich nicht über sie im Moment kümmern und vielleicht die Straße hinunter haben Browser spezifische Codierung für sie.
<!DOCTYPE HTML>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><style>body{margin: 0px;padding: 0px;}</style></head><body><center><br><div id='download'></div></center>
<script>
function download(){
//var newline= '
'; //no line breaks
//var newline= ' '; //no line breaks
//var newline= " "; //no line breaks
//var newline= "
"; //no line breaks
//var newline= "\r\n"; //no line breaks
//var newline= "\r\n;"; //appends ; but no line breaks
//var newline = '\n'; //no line break
//var newline = '/n'; //completely failed
var newline = 0x0D0A;
var tab = " ";
var text = "Title of the document" + newline;
text += "Just a line of text : ";
text = text +"Random";
text = text + newline + "Trial" + tab + "Time" + tab + "Correct" + newline;
//document.getElementById('download').innerHTML = '<a id="save" download="This_File.txt" href="data:text/plain,'+text+'">Save</a>';
//document.getElementById('download').innerHTML = '<a id="save" download="earth.txt" href="data:text/plain,mostly harmless and a bit more">Save</a>';
document.getElementById('download').innerHTML = "<a id='save' download='earth.txt' href='data:text/plain,mostly harmless and a bit more'>Save</a>";
}
download();
</script>
</body>
</html>
Ich möchte Ihnen allen für die Mühe und Zeit danken, die Sie mir bereits gegeben haben.
Die html5-Lösung funktioniert natürlich nur in Browsern, die das Download-Attribut unterstützen. –