Frage von Berghains, 31

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 :)!

Antwort
von regex9, 7

Für eine globale Lösung, die alle Clients betrifft, kann nur ein Server die Datenserialisierung übernehmen. Denn wie soll Client A von den gespeicherten Daten in Client B wissen? Beide kennen sich nicht und haben auch keine direkte Verbindung zueinander. Die Daten müssen erst an einen Server geschickt werden.

Ob du für den Datentransport nun Comet, WebSockets oder einen HTTP-Request nutzt und mit nodejs, PHP oder irgendeiner anderen serverseitigen Programmiersprache arbeitest, ist dann völlig egal.

Für einen einzigen Client kannst du die Daten mit JavaScript in einem Cookie ablegen oder den Anwendungscache verwenden.

Antwort
von mastema666, 23

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.

Kommentar von Berghains ,

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? 

Kommentar von mastema666 ,

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';
Kommentar von regex9 ,

nodejs läuft serverseitig, daher würde es damit natürlich funktionieren. 

Antwort
von NDDT1, 21

Am besten du legst einen Cookie auf dem Client-Rechner ab

Antwort
von MonkeyKing, 10

Google mal nach HTML5 Application Cache

Antwort
von LeonardM, 17

Cookie's dürften das problem lösen

Antwort
von webflexer, 13

Das localStorage könnte dir weiterhelfen.

https://wiki.selfhtml.org/wiki/JavaScript/Web_Storage

Kommentar von Berghains ,

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?

Kommentar von MonkeyKing ,

Das siehst du richtig. Ansonsten ist es nur mit so etwas wie node.js zu machen.

Keine passende Antwort gefunden?

Fragen Sie die Community