Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:ffprg2-2023:localstorage [2023/08/14 05:40] – created Ivo Blöchliger | lehrkraefte:blc:informatik:ffprg2-2023:localstorage [2023/09/03 05:04] (current) – [Aufgaben] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== localStorage ====== | ||
| + | * Dokumentation: | ||
| + | ===== Quiz ===== | ||
| + | Beantworten Sie folgende Fragen mit Hilfe der obigen Dokumentation. | ||
| + | |||
| + | < | ||
| + | <div id=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | Welche der folgenden Seiten hätte Zugriff auf die gleiche localStorage wie < | ||
| + | </ | ||
| + | <div class=" | ||
| + | <ul> | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | < | ||
| + | http:// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | </ul> | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | Wo genau werden die Daten des localStorage gespeichert? | ||
| + | </ | ||
| + | <div class=" | ||
| + | <ul> | ||
| + | < | ||
| + | Auf dem Webserver (Daten werden mit der HTML-Seite ausgeliefert) | ||
| + | </ | ||
| + | < | ||
| + | Lokal auf dem Gerät des Benutzers im «Dokumente»-Verzeichnis. | ||
| + | </ | ||
| + | < | ||
| + | Lokal auf dem Gerät des Benutzers im den Arbeitsdateien des verwendeten Browsers (wo z.B. auch Bookmarks (Favoriten), | ||
| + | </ | ||
| + | </ul> | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | Wie genau werden Daten im localStorage gespeichert? | ||
| + | </ | ||
| + | <div class=" | ||
| + | <ul> | ||
| + | < | ||
| + | Es wird einfach ein einziger String gespeichert. Die Webseite ist für dessen Interpretation zuständig. | ||
| + | </ | ||
| + | < | ||
| + | Mit Schlüsseln (Strings) können nur Strings direkt gespeichert werden. | ||
| + | </ | ||
| + | < | ||
| + | Es kann ein beliebiges JavaScript Objekt gespeichert werden. | ||
| + | </ | ||
| + | < | ||
| + | Mit Schlüsseln (Strings) können beliebige JavaScript Objekte gespeichert werden. | ||
| + | </ | ||
| + | </ul> | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <div class=" | ||
| + | <div class=" | ||
| + | Welche URL hat eventuell keinen Zugriff auf localStorage? | ||
| + | </ | ||
| + | <div class=" | ||
| + | <ul> | ||
| + | < | ||
| + | http:// | ||
| + | </ | ||
| + | < | ||
| + | file:/// | ||
| + | </ | ||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | | ||
| + | </ul> | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | <button class=" | ||
| + | </ | ||
| + | |||
| + | <div id=" | ||
| + | You Scored <span id=" | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | ===== Vor- und Nachteile ===== | ||
| + | * Super für Datenschutz: | ||
| + | * Trivial einfach serverseitig: | ||
| + | * An einen bestimmten Browser und Gerät gebunden. Wechselt man den Browser oder das Gerät, sind die Daten nicht verfügbar. | ||
| + | * Mögliche Abhilfe: «Download» in lokale Datei, danach «Upload» in anderem Browser/ | ||
| + | |||
| + | ===== Aufgaben ===== | ||
| + | <WRAP todo> | ||
| + | Schreiben Sie eine html-Seite mit folgenden Elementen: | ||
| + | * Ein Titel | ||
| + | * Ein Eingabefeld um den eigenen Namen einzugeben | ||
| + | * Ein Button «Vergiss mich!» | ||
| + | Die Seite soll sich wie folgt verhalten: | ||
| + | * Beim ersten mal Laden (oder nach dem «Vergiss mich!») soll der Titel «Hallo Unbekannt!» lauten. | ||
| + | * Wenn ein Name eingegeben wurde, soll (auch nach dem Neuladen der Seite) der Titel «Hallo Name» angezeigt werden. | ||
| + | * Die Eingabe eines Names überschreibt den alten Namen | ||
| + | * Der Vergiss-mich Knopf löscht den Namen aus der localStorage. | ||
| + | |||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | Machen Sie eine zweite HTML-Seite, die einfach nur den im localStorage gespeicherten Namen anzeigt und diesen automatisch aktualisiert, | ||
| + | |||
| + | Siehe auch https:// | ||
| + | |||
| + | Lösungsvorschlag: | ||
| + | |||
| + | </ | ||
| + | ==== Highscoreverwaltung ==== | ||
| + | |||
| + | <WRAP todo> | ||
| + | Schreiben Sie eine Highscoreverwaltung. | ||
| + | |||
| + | Zum Testen machen Sie zwei Eingabefelder für das Score und den Namen. | ||
| + | |||
| + | Überlegen Sie sich eine geeignete Datenstruktur (Object, Array) für eine Highscore-Liste. Diese kann mit in einen String und zurück verwandelt werden mit: | ||
| + | <code javascript> | ||
| + | let data = {" | ||
| + | | ||
| + | // string aus Object/ | ||
| + | let zeichenkette = JSON.stringify(data); | ||
| + | | ||
| + | // Wieder ein Object/ | ||
| + | let copy = JSON.parse(zeichenkette); | ||
| + | </ | ||
| + | |||
| + | Stellen Sie die 10 besten Scores in einer Tabelle dar. | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Todo-Liste ==== | ||
| + | |||
| + | <WRAP todo> | ||
| + | Hier finden Sie den Anfang eine ganz einfachen Todo-Liste: {{lehrkraefte: | ||
| + | |||
| + | Diese enthält Einträge, die direkt editierbar sind. Alle Änderungen werden sofort in localStorage gespeichert und bleiben so erhalten. | ||
| + | |||
| + | Mögliche Erweiterungen: | ||
| + | * Möglichkeit, | ||
| + | * Bessere Darstellung (CSS). | ||
| + | * Möglichkeit, | ||
| + | * ... | ||
| + | </ | ||