Lokální úložiště (anglicky Web Storage) umožňuje ukládat informace o relaci u klienta v podobě klíč / hodnota. Data se nepřenáší na vzdálený server a storage je funkční ve všech moderních prohlížečích (IE8+).
Lokální úložiště
Lokální úložiště je webová metoda pro ukládání dat v prohlížeči. Data můžeme ukládát hned dvěma způsoby:
1. sessionStorage - pro ukládání krátkodobých dat, vydrží po dobu relace prohlížeče. Pokaždé, když uživatel otevře stránku v novém okně/záložce, prohlížeč vytvoří nový objekt sessionStorage (sessions).
2. localStorage - ukládá data pro více než jednu relaci, je funkčně shodný se sessionStorage, krom toho, že doba uložení dat nezáleží na životnosti okna/záložky (efektivní alternativa cookies).
// hodnota vydrží po dobu trvání relace
sessionStorage.setItem('klíč', 'hodnota');
// hodnota vydrží i po skončení session
localStorage.setItem('klíč', 'hodnota');
Zjištění podpory
Jednoduchým kódem zjistíme, zda je lokální úložiště v prohlížeči podporováno:
if ("localStorage" in window && window.localStorage != null) {
// podporuje
document.write("Prohlížeč podporuje lokální úložiště!");
} else {
// nepodporuje
document.write("Prohlížeč nepodporuje lokální úložiště!");
}
V Internet Exploreru se do 8. verze vypíše, že nepodporuje lokální úložiště, a od 8. verze že podporuje. Více informací o podpoře napříč prohlížeči najdete na konci článku.
Metody
setItem(key / value): přidá pár (klíč / hodnota) do objektu sessionStorage,
getItem(key): načte hodnotu pro daný klíč,
clear(): odstraní všechny páry (klíč / hodnota) pro objekt sessionStorage,
removeItem(key): odstraní pár (klíč / hodnota) z objektu sessionStorage,
key(k): načte hodnotu klíče (k).
Při zadávání klíče můžete používat diakritiku.
V uvedených příkladech používáme sessionStorage, není třeba uvádět i localStorage, protože použití je úplně stejné.
Nastavení hodnoty
// nastaví pár (klíč / hodnota)
sessionStorage.setItem('jmeno','Filip'); // klíč = jmeno | hodnota = Filip
// nebo zkráceně
sessionStorage.jmeno = 'Filip';
Získání hodnoty
// vrátí 'Filip'
sessionStorage.getItem('jmeno');
// zkráceně, vrátí také 'Filip'
sessionStorage.jmeno;
Pokud chceme načtenou hodnotu i vypsat, musíme ji v JavaScriptu načíst do proměnné a až tu vypsat:
sessionStorage.jmeno = 'Filip'; // nastavíme jméno
var _jmeno = sessionStorage.jmeno; // do proměnné '_jmeno' načteme jméno (Filip)
document.write(_jmeno); // vypíšeme jméno (Filip)
Odstranění klíče / hodnoty
// odstraní pár (klíč / hodnota)
sessionStorage.removeItem('jmeno'); // odstraní jméno
Čištění úložiště
// vyčistí vše
sessionStorage.clear();
Příklady
V jednoduchých příkladech si ukážeme, jak můžeme Web Storage prakticky využít.
Navštívení dané stránky
V tomto příkladě si uděláme jednoduché počítadlo, které bude počítat navštívení dané stránky uživatelem.
Všimněte si, že používáme localStorage => v počítání můžeme pokračovat při další návštěvě.
Postup:
- Vytvoříme span s id pocitadlo (budeme do něj vypisovat výsledek).
- Pokud neexistuje pageLoadCount (I), nastavíme na nulu (II).
- Při každé návštěvě přičteme +1.
- Do spanu s id pocitadlo vypíšeme výsledek.
<p>
Tuto stránku jste si zobrazili <span id="pocitadlo">nevíme</span> krát.
</p> <!-- 1. -->
<script>
if (!localStorage.pageLoadCount) // 2.I.
localStorage.pageLoadCount = 0; // 2.II.
localStorage.pageLoadCount = parseInt(localStorage.pageLoadCount) + 1; // 3.
document.getElementById('pocitadlo').textContent = localStorage.pageLoadCount; // 4.
</script>
Odkaz na odhlášení
Vytvoříme si odkaz pro odhlášení uživatele, pokud bude nastaven objekt jméno, vyskočí okno s textem, aby se uživatel brzy vrátil.
Postup:
- Nastavíme jméno.
- Vytvoříme odkaz pro odhlášení - okno vyskočí v případě, že je nastaveno jméno.
<script>
sessionStorage.jmeno = 'Patrik'; // 1.
</script>
<!-- 2. -->
<a href="javascript:;" onClick="if(sessionStorage && localStorage.getItem('jmeno')) { alert('Vrať se brzy, ' + sessionStorage.getItem('jmeno')); }">Odhlásit se</a>
Velikost
Web Storage poskytuje mnohem větší kapacitu než cookies (4KB).
Internet Explorer | 10MB na doménu |
Mozilla | 5MB na doménu |
Google Chrome | 5MB na doménu |
Opera | 5MB na doménu |
Podpora
Web Storage je funkční ve všech moderních prohlížečích, viz tabulka.
Internet Explorer | od verze 8 |
Mozilla | Firefox 2, oficiálně 3.5+ |
Safari | od verze 4 |
Google Chrome | 4+ (sessionStorage 5+) |
Opera | 10.50+ |
Výsledky příkladů najdete na samostatné stránce.