Möglichkeit Daten mittels JavaScript dauerhaft zu speichern?
Ich kann Daten mit Hilfe von JavaScript auslesen und ändern. Das ist soweit alles klar. Ich kann sie aber offenbar nicht dauerhaft im Dokument sichern. Ich möchte beispielsweise die Schriftgröße (Css) auslesen, ändern und dauerhaft sichern, sodass die neue Regel auch nach dem erneuten Laden in allen Clients angewendet wird. Serverseitig geht's mit PHP sicher locker von der Hand, aber sollte nach Möglichkeit nur JavaScript zum Einsatz kommen.
Besteht hier eine elegante Möglichkeit?
Vielen Dank im Voraus :)!
6 Antworten
Am besten du legst einen Cookie auf dem Client-Rechner ab
Google mal nach HTML5 Application Cache
Das localStorage könnte dir weiterhelfen.
Das siehst du richtig. Ansonsten ist es nur mit so etwas wie node.js zu machen.
Cookie's dürften das problem lösen
Direkt bzw nur mit JavaScript dürfte das nicht funktionieren (höchstens mit node.js vielleicht, kA), aber du könntest ja eine Kombination aus JS und PHP nutzen (=> Ajax) um die Daten vom Server auszulesen bzw auch wieder dort zu speichern.
Also du speicherst die Daten per PHP in einer DB, Textdatei oder wie auch immer du magst, und dann nutzt du eben Ajax um diese Daten im JS auszulesen bzw sie zum speichern wieder an PHP zu senden.
Das habe ich auch überlegt. Dann müsste ich aber alle Eigenschaften in der DB ablegen, um sie abrufen, ändern und speichern zu können. Wären fopen() etc. ein ein Ansatz, um die Eigenschaften und Werte direkt in der Datei zu manipulieren?
Geht natürlich auch nur via PHP, aber natürlich könntest du die Daten auch direkt in der CSS Datei ändern.
Am einfachsten wäre es wohl, nur die Eigenschaften, die auch wirklich änderbar sein sollen, in eine eigene kleine *.css zu packen und diese dann in der eigentlichen einzubinden, dann müsstest du nicht noch den Inhalt der ganzen CSS durchsuchen, die richtige Stelle finden etc, sondern nur das allernötigste eben speichern (kA wie viel du da änderbar haben willst, aber z.B. nur die erwähnte Schriftgröße wäre dann ja in einer Zeile machbar).
Also z.B. eine test.css schreiben mit einem Inhalt wie
testklasse { font-size: 1.5em; }
Und in der eigentlichen .css dann diese einbinden
@import 'test.css';
Das bedeutet aber, dass die Daten nur lokal beim jeweiligen Client zur Verfügung stehen und nicht global für alle sichtbar wären. Oder sehe ich das falsch?