localStorage ist eine neue JavaScript-API in HTML5, mit der wir Daten in Schlüssel/Wert-Paaren im Browser eines Benutzers speichern können. Es ist ein wenig wie Cookies, außer:
- Cookies laufen ab und werden oft gelöscht. localStorage ist für immer (bis es explizit gelöscht wird).
- localStorage wird nicht in HTTP-Anfragen gesendet. Sie müssen es explizit anfordern.
- Sie können viel mehr Daten in localStorage speichern als in Cookies.
- Die API für localStorage ist extrem einfach und unkompliziert.
Wenn Sie sich weiter einarbeiten müssen, habe ich kürzlich ein Video-Screencast zu localStorage erstellt. So funktioniert es:
/* Set some data */
localStorage.setItem("key", "value");
/* Get some data */
localStorage.getItem("key");
Keine Bibliotheken erforderlich, das ist reines JavaScript. Wenn Sie möchten, können Sie Modernizr verwenden, um es mit Modernizr.localstorage zu testen.
OK, das sind alle technischen Details. Sehen wir uns einige Orte im Web an, die es nutzen könnten, nutzen sollten oder bereits nutzen. Hoffentlich inspiriert das Ihre eigenen Websites.
NUTZT localStorage

Snapbird (ein leistungsfähiges Twitter-Suchtool) merkt sich den letzten Stream einer Person, den Sie durchsucht haben. Es wird davon ausgegangen, dass Sie beim nächsten Besuch wahrscheinlich dieselbe Person durchsuchen werden, und dies spart Ihnen eine Sekunde. Wenn nicht, können Sie es einfach löschen und ersetzen. Ich finde es nützlich, da ich normalerweise nach alten Tweets von mir suche.

Das Webbie Madness-Event dieses Jahr hatte ein großes Abstimmungsraster im Stil von March Madness, bei dem die Leute ermutigt wurden, in mehreren Runden Gewinner auszuwählen. Die erste Runde hatte 32 Personen in 16 Kämpfen. Die Namen der Personen waren verschleiert. Es dauerte eine Weile, um herauszufinden, wer wer war und wen man wählen sollte, und es war nichts, was ich in einer einzigen „Sitzung“ tun konnte. Ich schlug vor, dass sie die Stimmen speichern, während die Leute sie abgaben, damit Sie jederzeit zurückkommen und fertig werden könnten. Wie totale Badasses haben sie es getan!

JSBin (von Remy Sharp, der auch Snapbird gemacht hat, wer hätte das gedacht) ermöglicht es Ihnen, Ihre HTML/JavaScript-Startvorlage zu speichern, damit Sie beim nächsten Besuch dieselbe Vorlage verwenden können.
SOLLTE localStorage verwenden

Typekit hat ein Typentester-Werkzeug, wenn Sie eine bestimmte Schriftart anzeigen. Sie können Ihren eigenen Text in das Feld eingeben, um zu sehen, wie er in dieser Schriftart aussieht. Leider ist dieser benutzerdefinierte Text weg, wenn Sie zu einer anderen Schriftart wechseln. Dies wäre ein großartiger Anwendungsfall für localStorage. Wenn sich der Wert in diesem Bereich ändert, speichern Sie ihn in localStorage und laden Sie ihn beim Laden der Seite wieder ein. Ich denke, das wäre eine großartige Zeitersparnis, da ich denke, dass das Springen zwischen verschiedenen Schriftarten, um diesen Text anzuzeigen, ein ziemlich häufiger Anwendungsfall ist.

CSS Lint hat ein Gitter mit Kontrollkästchen, welche Funktionen CSS Lint für Sie überprüfen soll, wenn Sie Ihr CSS testen. Es wäre wirklich schön, wenn dies localStorage verwenden würde, um sich die von Ihnen verwendete Kontrollkästchenkonfiguration zu merken, sodass sie beim Neuladen der Seite oder beim späteren Besuch gleich bleibt. Wenn Ihnen also das Kontrollkästchen „IDs nicht verwenden“ nicht gefällt, können Sie es dauerhaft deaktivieren =).

So ziemlich jede Website mit einem Anmeldeformular könnte localStorage verwenden, um den Benutzernamen zu speichern. Wenn ein Benutzer zurückkehrt, ist das ein Schritt weniger für ihn, um sich anzumelden.

Zeldman.com hat Links im Footer, mit denen Sie die Farben der Website zwischen zwei Versionen umschalten können. Dies wird als Cookie gespeichert, was großartig ist, aber der Zerbrechlichkeit von Cookies unterliegt. Jede Website wie diese mit alternativen Styling-Optionen (z. B. Schriftgrößenumschaltung) könnte diese Informationen in localStorage speichern und sie besser persistent machen.
MEHR
Das ist nur die Spitze des Eisbergs. Ich bin sicher, Leute mit entwicklerorientierteren Köpfen können sich größere und bessere Ideen dafür ausdenken. Speichern des Fortschritts in einem Spiel? Caching von Assets? Was habt ihr noch?
Tippfehler in Zeile 5 Ihres Code-Snippets.
localStorage.setItem("key");(sollte getItem sein)
Abgesehen davon, tolle Lektüre, danke.
Danke Kyle! (vergraben, weil es keine Rolle mehr spielt)
Danke Chris. Ich habe das kürzlich auf Dive Into HTML5 entdeckt. Sie haben mich sicherlich inspiriert, das in meinen eigenen Projekten auszuprobieren.
Ist lokaler Speicher für den Endbenutzer zugänglich? Es scheint, als ob die Speicherung von Anmeldeinformationen auf einem Computer (der vielleicht öffentlich ist) von anderen abgerufen werden könnte.
Vollständig zugänglich. Versuchen Sie, eine Website zu besuchen, die es verwendet, und geben Sie localStorage in die Browserkonsole ein. Sie sehen alles, was gespeichert wurde.
Ja, LocalStorage speichert die Informationen, aber Sie können die Daten löschen, wenn eine Sitzung mit sessionStorage.clear(); beendet wurde.
Als goldene Regel gilt: Wenn Sie „Klartext“ und „Anmeldeinformationen“ im selben Satz hören, ist das schlecht.
Gott sei Dank für localStorage. Ich wollte ein paar Dinge clientseitig für mein neuestes Spiel/meine neueste Website speichern und wollte auf Cookies zurückgreifen. Glücklicherweise ist localStorage weit verbreitet und ich habe es verwendet, um die Spielguthaben (Erinnern, wie viele Münzen eingeworfen wurden), Anleitungsposition (nur einmal anzeigen), um sich zu merken, welche Arbeit bereits entdeckt wurde (um sie beim nächsten Besuch auf der Homepage anzuzeigen), den Audiostatus (stummgeschaltet oder nicht) und ein paar weitere technische Dinge zu speichern.
Sie sind insgesamt ziemlich gut, das Einzige ist, dass Sie JSON verwenden müssen, um Arrays zu speichern.
Warum in diesen Beispielen (wie dem Anmeldeformular oder den CSS Lint-Kontrollkästchen) localStorage anstelle von Cookies verwenden?
Ich habe über das Login-Beispiel dasselbe gedacht.
Fantastischer Artikel Chris. Ich wusste nichts von localStorage, aber es sieht SOOO einfach aus, dass ich es ausprobieren werde!
@Federico: Die meisten Browser, die localStorage unterstützen, verfügen auch über native JSON-Parser, sodass Sie JSON.stringify und JSON.parse problemlos ohne eine Bibliothek verwenden können :)
Ich glaube nicht, dass localStorage überhaupt für die Änderung von Stilen auf einer Website nutzbar ist. Es ist nur von JavaScript (nicht serverseitig) zugänglich, sodass Sie die Seite in der Standardfarbe laden und dann mit JS wechseln müssten.
Ich hätte gerne, dass mobile Twitter-Clients localStorage verwenden, damit Sie einen Tweet als Favorit markieren können, den Sie später lesen möchten, wenn Sie sich an einem Ort ohne Netzwerkverbindung befinden.
Das ist sehr einfach. Ich werde es auf jeden Fall ausprobieren… Ich habe davon gehört, als ich HTML 5-Tutorials durchgesehen habe.
Ich habe einen persönlichen Task-Manager mit localStorage entwickelt. Es war etwas mühsam, da alle Daten als Strings gespeichert werden (Datentypkonvertierung und Ähnliches). Ich habe sogar eine kleine Bibliothek namens storeIt geschrieben, die darauf abzielt, einige Methoden zu erweitern und localStorage einfacher (und kürzer zu schreiben) zu machen.
https://github.com/brunolazzaro/storeIt
Großartig…!!! Aber das einzige Problem ist die Synchronisierung mit einem serverseitigen Skript.
Nicht wirklich, Sie könnten einfach einen Ajax-Aufruf erstellen, der den Schlüssel:Wert an eine Empfängerdatei sendet.
Einige weitere Beispiele
Kontakt- oder Kommentarformulare, wie dieses hier, könnten
localStorage(anstelle von Cookies) verwenden, um die eingegebenen Benutzerdaten lokal zu speichern. Ich mache das auf meiner Website und auf jsPerf.http://mothereffingcssescapes.com/ und http://mothereffingunquotedattributes.com/ verwenden beide
localStorage, um die Benutzereingaben beizubehalten, selbst wenn Sie die Seite aktualisieren oder versehentlich schließen.Großartig. Wenn mehr Leute wissen möchten, wie man es im Zusammenhang mit Formularen verwendet, schauen Sie sich den Link am Anfang des Artikels an, der zum Screencast führt, wo es darum geht, es auf Formularen zu verwenden.
Tolle Beispiele Chris. Ich persönlich liebe es, wie ColorZilla den von mir erstellten Gradienten „erinnert“. LocalStorage ist großartig, ich bin sicher, wir werden in naher Zukunft mehr davon sehen.
Danke, Chris!
Wie immer ist Ihre Website meine Hauptressource, wenn es darum geht, neue Dinge zu lernen! LocalStorage ist absolut AWESOME! Danke für das Teilen!
Viel Erfolg!
Grooveshark ist ein weiteres Beispiel für eine Website, die bereits LocalStorage verwendet.
Schöne Beispiele Chris,
Ich habe eine kleine Anwendung entwickelt, die ein JSON in localStorage speichert.
Sie können eine Liste von Kunden hinzufügen und Informationen für jeden Kunden speichern, eine Gutschrift/Belastung + Datum.
Sie ist nicht sehr skalierbar, aber sie erfüllt ihren Zweck :)
https://github.com/leonzinger/Clients-management
Eine weitere Möglichkeit, Set und Get zu verwenden: assoziatives Array.
/* Einige Daten festlegen */
localStorage[„key“] = „value“;
/* Einige Daten abrufen */
alert(localStorage[„key“]);
Danke! Ich finde das eine einfachere Art, sie einzustellen und abzurufen!
Kein Problem :)
Weiß jemand, wie man den Speicher auf seinem lokalen Rechner begrenzt, der dem Browser und den Websites zur Verfügung steht?
Zum Beispiel: In Chrome, IE und Firefox können Sie die Größe der TEMP-Dateien auf 200 MB begrenzen, sodass Sie wissen, dass Ihr Browser zu keinem Zeitpunkt mehr als das herunterlädt.
Problem, das ich sehe – da immer mehr Websites localStorage nutzen, füllen sich die Maschinen und Benutzer wissen nicht, woher ihr Speicherplatz verschwindet.
Zweites Problem: Wenn der Benutzer die Speichermenge begrenzt, funktioniert es dann nach dem Prinzip „First In, First Out“?
Anscheinend speichern Browser bis zu 5 MB, ohne den Benutzer zu stören. Wenn die Website mehr verlangt, wird sie danach fragen.
Benutzername und Passwort werden in Mozilla Firefox standardmäßig gespeichert.
Gerade wenn ich denke, ich weiß alles (nun ja, nicht wirklich), kommt etwas Neues heraus, können wir bitte etwas Zeit haben, um aufzuholen, Gottverdamm… ;)
Diese Website (www.alisonshurville.co.uk) verwendet dieselbe Technik, um sich zu merken, welcher Layoutmodus für die Miniaturansichten ausgewählt wurde.
Schauen Sie sich an: http://facturarapida.net, die Speicherfunktion basiert vollständig auf localStorage.