Speichern einer HTML Seite

  • Okay, wäre auch nicht tragisch wenn man in Chrome den "Umweg" gehen müsste und Seite 1 erst öffnen muss, dafür funktioniert es bei Firefox tatsächlich perfekt, beim IE funktioniert leider der localstorage nicht.

    Edit: beim IE funktioniert der localstorage nun doch dank dem Befehl:

    JavaScript
    !localStorage && (l = location, p = l.pathname.replace(/(^..)(:)/, "$1$$"), (l.href = l.protocol + "//127.0.0.1" + p));
  • 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.

    Wäre es vielleicht möglich, wenn ich den Button auf Seite 1 behalte für diesen die click() Methode auszuführen, obwohl ich das iFrame mit display:none ausblende?

    Also wenn ich z.B. einen Button auf Seite 2 betätige führt das dazu, dass für den Button auf Seite 1 die click() Methode ausgeführt wird.

  • Zitat

    Also wenn ich z.B. einen Button auf Seite 2 betätige führt das dazu, dass für den Button auf Seite 1 die click() Methode ausgeführt wird.


    Eigentlich kein Problem, aber leider wäre das, genau so wie das Auslesen des HTML, ein Cross-Domain-Zugriff und würde genau so vom Browser abgewiesen.

    Was man versuchen könnte, ist, einen URL-Parameter beim Einbinden an die Seite 1 zu übergeben, die das Speichern veranlasst. Werde ich versuchen ...

  • Manche sagen ja, "geht nicht - gibt's nicht" und das mit dem URL-Parameter funktioniert tatsächlich:


    Seite 2 mit dem Button:

    Seite 1 mit der Tabelle:

  • Funktioniert jetzt alles super vielen Dank :)


    Wenn ich nun noch mehr Fragen bekomme zu meinem Projekt sollte ich dann lieber ein neues Thema erstellen? Hat ja letztendlich nicht mehr viel mit dem Ursprungsthema zu tun.

  • Okay dann würde ich meine nächste Frage gleich mal hier wieder stellen, kurz zur Erklärung: Seite 2 (die mit den Textfeldern) speichert mit einem Button die Werte der Textfelder im Localstorage, damit man zwischendurch speichern den Browser schließen kann etc. ohne dass die bisher eingegebenen Daten verloren sind. Nun hätte ich gerne eine Möglichkeit das zwischendurch gespeicherte Dokument an jemand z.B. per Mail zu schicken. Ich dachte vielleicht gibt es eine Möglichkeit den Localstorage auszulesen und zu versenden das wäre aber sehr umständlich. Fällt dir da etwas ein

  • Du kannst natürlich das gespeicherte Dokument von Hand per Email versenden, aber ich verstehe dich so, dass Du dies automatisch durch Knopfdruck tun möchtest.

    Verstehe ich dich richtig, Du möchtest das Dokument von Seite 1 mit der Tabelle, die aus dem Localstorage generiert wird, verschicken?

  • Nein ich möchte Seite 2 verschicken, sodass z.B. Person 1 5 Felder ausfüllt das Dokument verschickt und Person 2 das Dokument öffnet und sieht was Person 1 eingegeben hat und das ggf. ändern oder ergänzen kann.

  • Dann ist es auf der einen Seite u. U. einfacher, weil dann die Cross-Domain-Probleme nicht auftreten. Normaler Weise braucht man zum Verschicken einer Email PHP, aber man könnte es u. U. auch mit der mailto-Funktion machen. Das setzt dann voraus, dass die Person, die das Formular verschickt, einen Email-Client installiert hat,

    Auf der anderen Seite sehe ich das Problem, dass Du das ganze lokal haben willst. Bei der empfangenden Person muss das Ganze ja wieder in eine HTML-Seite eingetragen werden und die liegt im Dateisystem u. U. ganz woanders.

  • Also was ich versucht habe: die Felder ausfüllen die Seite speichern per Mail versenden. Aber wenn der Empfänger sie öffnet sind die Felder wieder leer. Grundsätzlich wäre es nicht so schlimm wenn der Sender es quasi "per Hand" verschicken muss und der Empfänger es in den richtigen Ordner packen muss aber es wäre schon super wenn es einfach klappt dass die Werte übernommen werden. Die speichere ich übrigens in einem script im array und im localstore

  • OK, dann geht es zunächst mal nur darum, die Seite zu speichern, dann zu verschicken und sicher zu stellen, dass die Formularfelder wieder richtig ausgefüllt sind, wenn der Empfänger die Seite gespeichert und geöffnet hat. Man müsste nur das Array mit den Werten in der Seite einbetten, so dass es mit verschickt wird und beim Empfänger wieder auslesen. Ich werde so etwas ausarbeiten ...

  • So, ich habe mal das Grundprinzip fertig gestellt:

    Mit "Als HTML mit Formulardaten speichern" kann man die Seite mit eingebetteten Formulardaten speichern und ggf. per Email verschicken. Öffnet sie der Empfänger, kann er mit "Formulardaten lesen" die eingebetteten Daten in die Eingabefelder eintragen.

    Letzteres kann man natürlich auch automatisch beim Laden der Seite machen.

    Dies setzt voraus, dass der Empfänger die selbe Umgebung mit lokalem jQuery und download-Skript hat. Ist das nicht der Fall, ist es kein Problem, die Skripts in der HTML-Datei einzubetten.

    Prüfe, ob das in die Richtung geht, die Du brauchst.

  • Super! Prinzipiell geht das in die Richtung ja, allerdings habe ich Textfelder die ggf. verschwinden und andere die auftauchen und da funktioniert es leider nicht. Ich speichere alles was eingetragen wird aber in einem Zweidimensionalen Array wenn man also nur diesen importieren könnte würde das schon ausreichen.

  • Verstehe, nicht nur die Inhalte bzw. values sind dynamisch, sondern auch der Aufbau des Formulars. Mit JSON.stringify kannst Du, genau so wie ich es gemacht habe, dein Array in ein script-Tag eintragen und auf diese Weise übertragen. Und beim Empfänger wieder einlesen. Versuche es und wenn Du nicht zum Ziel kommst, dann poste die Struktur des Arrays.

  • Ich bekomm es leider nicht selbst hin habe das versucht:

    Mit dem alert Befehl wollte ich testen ob es klappt aber es passiert leider überhaupt nichts wenn die Funktion aufgerufen wird.

    info ist ein zweidimensionaler Array der erste Index hat eine Größe von 11 der zweite ca 60.

  • Der Code sieht OK aus. Hast Du auch das script-Tag angelegt?

    Code
    <script id="formdata"></script>

    Wenn ja, sieh dir den Quelltext der gespeicherten Seite an. Ist dort dieses script-Tag mit Inhalt gefüllt?


    Kommen in der Console irgend welche Fehlermeldungen?

  • Ich brauche noch einmal deine Hilfe, ich habe jetzt einiges umgestellt, unter anderem den Array info in firstInfo umbenannt und den ersten Index statt mit Zahlen mit Zeichenketten gefüllt und den zweiten Index mit der ID des jeweiligen Textfeldes:

    Funktioniert soweit alles nur die readhtmlformdata() Funktion nicht mehr, so sehen die beiden Funktionen jetzt aus:

    Wie du siehst habe ich versucht mit alert zu testen ob es funktioniert, bei der savehtmlformdata() kommt auch der richtige Wert bei readhtmlformdata() passiert nichts. Das steht in der Konsole:Uncaught TypeError: Cannot read property 'sysIntegr' of undefined


    Edit: so funktionierts, nur leider recht aufwändig da ich es für alle anderen Seiten noch ergänzen muss

Jetzt mitmachen!

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