× Aktuálně z oboru

SHIELD Experience Upgrade 7 – méně hledání a více zábavy [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]
Celá zprávička [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]

Web Storage (lokální úložiště) – HTML5

[ http://programujte.com/profil/21130-patrik-janacek/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/14523-martin-simecek/ ]Google [ ?rel=author ]       26. 3. 2012       25 314×

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:

  1. Vytvoříme span s id pocitadlo (budeme do něj vypisovat výsledek).
  2. Pokud neexistuje pageLoadCount (I), nastavíme na nulu (II).
  3. Při každé návštěvě přičteme +1.
  4. 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>

Výsledky příkladů [ http://programujte.com/storage/redakce/2012/20-web-storage-priklady.html ]

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:

  1. Nastavíme jméno.
  2. 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>

Výsledky příkladů [ http://programujte.com/storage/redakce/2012/20-web-storage-priklady.html ]

Velikost

Web Storage poskytuje mnohem větší kapacitu než cookies (4KB).

Velikost Web Storage
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.

Podpora Web Storage
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 [ http://programujte.com/storage/redakce/2012/20-web-storage-priklady.html ].


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2012022801-web-storage-lokalni-uloziste-html5/ ].