Speichern einer HTML Seite

  • Hi zusammen,


    ich versuche eine HTML Seite die eine Tabelle mit Werten erstellt, die sich im Localstorage befinden, mit Hilfe eines Links zu speichern. Funktioniert mit folgendem Code eigentlich auch wunderbar.

    Das Problem ist nun, ich hätte gerne, dass das abgespeicherte Dokument kein Script mehr enthält. Wenn ich das mit Speichern unter... abspeichere sind die Daten feste Werte und das Script verschwunden, wenn ich es mit dem Link speichere bleibt der Quellcode auch in der gespeicherten Version so wie oben. Das Problem ist dann, dass sich die Werte verändern, sobald die Werte im Localstorage überschrieben werden und das soll nicht sein. Gibt es eine Möglichkeit mit dem Link zu speichern, sodass auch dann der Script teil verschwunden ist?

    Code
    <body>
            <div id="test"><table><tbody><tr><td>Das Testwort lautet:</td><td>Test1Test1</td></tr><tr><td>Das zweite Testwort lautet:</td><td>HALOOOO</td></tr></tbody></table>
                <a href="test.html" download="specification.html">Download</a>
      
    
    </div></body>

    So sieht der manuell gespeicherte Quellcode aus, den hätte ich auch gerne wenn man über den Link speichert.

  • Da fällt mir nur etwas ein, das etwas kompliziert ist:

    DOM mit jQuery einlesen, Skript-Elemente entfernen und das HTML speichern:

    Das download.js bekommst Du hier:

    https://github.com/rndme/download

  • Danke für die Antwort, funktioniert auch echt super. Das Problem ist (und das Hatte ich vergessen zu erwähnen, sorry) das ganze soll auch offline funktionieren. Möglicherweise täusche ich mich auch (bin noch Anfänger) aber hierfür brauche ich eine Internetverbindung oder?

  • Spitze es funktioniert, vielen vielen Dank :)


    Wenn du mir jetzt noch eine Methode hättest, mit der ich das mit Hilfe eines Buttons in eine .doc oder .docx Datei umwandeln kann hättest du meine schlaflosen Nächte behoben


    Bisher war mein (unschöner) Plan einfach diese HTML in Word zu öffnen und dann als .docx abzuspeichern, was zwar funktioniert aber mir nicht wirklich gefällt.


    Achja und was auch super wäre, kann ich diesen Button auch in eine andere HTML Seite einbauen, sodass aber trotzdem diese (mit der Tabelle) gespeichert wird?

    Falls ich mich hier etwas dämlich anstelle tuts mir leid.

  • Zitat

    kann ich diesen Button auch in eine andere HTML Seite einbauen, sodass aber trotzdem diese (mit der Tabelle) gespeichert wird?

    Müsste ich überlegen, ob das möglich ist, ohne etwas serverseitiges einzubeziehen. Vielleicht hilft es aber schon, wenn Du den Button, ebenso wie die Skripts, aus dem DOM ausblendest.


    Was das docx-Format betrifft, recherchiere ich mal ...

  • Ich habe das htmtdocx mal getestet. Es läuft zwar ohne Fehlerausgaben durch, aber das Dokument ist leer. Dieses Problem wird hier diskutiert:

    https://github.com/evidenceprime/html-docx-js/issues/19

    und der Grund ist offenbar, dass OpenOffice, GoogleDocs etc. die Altchunk-Technologie unterstützen. Selber habe ich Softmaker-Office und dafür könnte das auch gelten. Sicher hast Du MS-Office, dann probiere doch Mal, ob es damit funktioniert.

  • Gern geschehen.

    Zitat

    kann ich diesen Button auch in eine andere HTML Seite einbauen, sodass aber trotzdem diese (mit der Tabelle) gespeichert wird?

    Auch dafür ist mir eine einfache Lösung eingefallen: Da dies offensichtlich nicht Cross-Domain ist, kannst Du das Dokument auf der Seite, wo der Button ist, in einen iFrame einlesen und von dort das HTML auslesen.

  • Da hatte entweder ich dich oder Du mich falsch verstanden. Du hattest geschrieben:

    Zitat

    kann ich diesen Button auch in eine andere HTML Seite einbauen, sodass aber trotzdem diese (mit der Tabelle) gespeichert wird?

    Sagen wir Seite 1 ist die mit der Tabelle, die gespeichert werden soll und Seite 2 die mit dem Button. Auf Seite 2 wird jetzt Seite 1 in einem iFrame eingebunden. Drückt man den Button auf Seite 2 wird der Inhalt von Seite 1 aus dem iFrame eingelesen und gespeichert. Wenn dies nicht das ist, was Du dir vorgestellt hast, korrigiere mich.

  • Okay du hattest mich richtig verstanden. Ich habe jetzt auf Seite 2 das geschrieben:

    Code
    <iframe src="speichern/save.html">

    Jetzt wird mir die komplette Seite 1 angezeigt. Ich hatte jetzt den Ansatz nur den Button hier zu sehen, also den Rest im iFrame auszublenden, aber scheinbar hattest du da eine andere Idee :D

  • Zitat

    Jetzt wird mir die komplette Seite 1 angezeigt. Ich hatte jetzt den Ansatz nur den Button hier zu sehen, also den Rest im iFrame auszublenden

    Wenn Du den iFrame nicht sehen möchtest, ist es kein Problem, ihn mit CSS und display:none unsichtbar zu machen.


    Ich habe mal schnell ein Demo gemacht. Seite 2 mit dem Button und dem iFrame:

    Und save-as-docx-content.html ist die Seite mit der Tabelle, die gespeichert werden soll und dem Skript, das sie erzeugt.

    Aber möglicher Weise verstehe ich dich noch falsch.

  • Was funktioniert denn nicht? Lass den iFrame zunächst sichtbar - wird die Seite mit der Tabelle angezeigt? Wird der Speichern-Dialog eingeblendet, wo man das Verzeichnis auswählt? Kommen Fehler in der Console?

  • Okay es funktioniert doch, allerdings nicht mit Chrome, dort wird der iFrame mit allem angezeigt aber das Betätigen des Buttons löst nichts aus, beim IE funktioniert es.


    Der Button von Seite 1 funktioniert auch mit Chrome.

  • Jetzt wird mir das Problem klar: Bei mir funktioniert es, weil ich lokal mit einem Webserver teste. Du möchtest es jedoch lokal laufen lassen ohne Webserver. Und dann blockt Chrome es wegen Cross-Origin-Gesichtspunkten. Auf Anhieb fällt mir da keine Lösung ein. Einziehen mit PHP entfällt ja dann auch. Ich überlege weiter.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!