Speichern Sie das mit Javascript erzeugte Dokument

Javascript kann das vom Browser angezeigte Dokument manipulieren, so dass Folgendes zutrifft:

<script>
    document.write("<table><tr><td>Hola</td><td>Adios</td></tr></table>");
</script>

Lässt den Browser eine Tabelle anzeigen, als wäre es das ursprüngliche HTML-Dokument:

<table>
    <tr>
        <td>Hola</td>
        <td>Adios</td>
    </tr>
</table>

Gibt es eine Möglichkeit, diesen Dokumentinhalt zu speichern / bereitzustellen?

Momentan haben wir einige gut generierte Berichte mit Ext-js. Ich würde gerne die "text / html" -Version davon haben (ich meine, etwas, das kein Javascript erfordert).

Deshalb würde ich am Ende der Seite eine Schaltfläche hinzufügen: "Als blaba speichern" und das Dokument sollte den Text / die einfache Version anzeigen.

Der einzige Weg, den ich jetzt denken könnte, ist, den Inhalt in eine Javascript-Variable zu schreiben, wie:

 var content = document.toString(); // or something magic like that.
 // post it to the server

Stellen Sie diesen Wert dann auf dem Server bereit und lassen Sie den Server diesen Wert anzeigen.

 <%=request.getParameter("content-text")%>

Sieht aber sehr knifflig aus.

Gibt es eine alternative

BEARBEITEN

Ok, ich habe es fast geschafft. Jetzt muss ich nur noch das neue Fenster öffnen, damit die Option "Möchten Sie es speichern?"

Das ist, was ich bisher habe

<script>
    document.write("<div id='content'><table><tr><td>Hola</td><td>Adios</td></tr></table></div>");
    function saveAs(){
        var sMarkup =  document.getElementById('content').innerHTML; 
        var oNewDoc = document.open('application/vnd.ms-excel');        
        oNewDoc.write( sMarkup + "<hr>" );
        oNewDoc.close();
    }
</script>

<input type="button" value="Save as" onClick="saveAs()"/>

Die Linie:

    var oNewDoc = document.open('application/vnd.ms-excel');        

Sollte den neuen Inhaltstyp angeben, wird aber ignoriert.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage