HTML5
localStorage
contenteditable
HTML
Børre Stenseth
Data i sandkassa >localStorage

localStorage, sessionStorage og contenteditable

Hva

Klassen localStorage er en enkel mekanisme for å lagre data i nettleseren. Den skiller seg fra cookies på funksjonelt sett 2 måter.

  • Vi har ikke attributter som domain, expires, path, secure. Vi lagrer rett og slette et key,value - par.
  • Data i localStorage er ikke involvert i HTTP-kommunikasjon.

localStorage

localStorage har følgende egenskaper/metoder:

  • length
  • key(int)
  • getItem(key)
  • setItem(key, value)
  • removeItem(key)
  • clear()

Prøv å reloade denne siden, med reload-knappen eller ctrl-r

Du har lastet denne siden ganger

Den involverte koden er slik:

_fragment

Hvis vi eksperimenterer litt med nettleserens historie ser vi at "clear cache" ikke ødelegger localStorage, men "clear cookies" gjør det.

contenteditable

Vi prøver å kombinere contenteditable med localStorage, og prøver oss med en favorittliste med artister. Forsøk å editere denne lista og reload siden eller lukk den og åpne på nytt.

  1. Bruce Springsteen

Sekvensen som drar dette ser slik ut:

_fragment

Hva hvis vi ønsker å lage en tidsbegrenset lagring, slik som vi kan gjøre i cookies ? Det er ingen enkel måte å fikse dette på. Den muligheten vi har er å lagre tidsbegrensningen som et eget item og kontrollere det når siden lastes. Eller vi kan bruke sessionStorage som bare lagrer mens siden er oppe i nettleseren.

Vi kan sjekke om vi kan får tak i localStorage på en annen webside. Forutsetter at du har lagt til og lagret noen flere artister i lista over.

testLocalStorage.html https://borres.hiof.no/wep/htm/localstorage/testLocalStorage.html

Som du ser av denne demoen går dette greitt. Vi kan altså bruke localStorage som et "felles lager" i en site med flere websider.

Dette gir oss også mulighet for å editere tekst før vi printer og det gir oss mulighet for å editere tekst som kan plukkes opp og sendes f.eks som parameter i en AJAX-request eller som parameter i en GET.

Fyll ut dine favorittartistene dine i lista ovenfor og

Koden som kjører er slik:

_fragment

textarea

Editer, gjerne HTML-kode (kanskje et element med med contenteditable !), og Oppdater

her havner det

HTML-fragmentet:

<textarea rows="10" cols="40" id="txtsource" contenteditable="true">
<ol>
<li>Ole</li>
<li>Jens</li>
</ol>
</textarea>
<div><button onclick="Update()">Oppdater</button></div>
<div id="result">her havner det</div>

Scriptet:

function Update()
{
    var V=document.getElementById('txtsource').value;
    document.getElementById('result').innerHTML=V;
    localStorage.setItem('txtsource',V);
}

Hvis du ha gjort noen endringer kan du jo sjekke her:

testLocalStorage.html https://borres.hiof.no/wep/htm/localstorage/testLocalStorage.html

remove

Hvis du vil fjerne alt som er satt i localStorage på denne siden:

function removeAll(){
    localStorage.removeItem('favorites2');
    localStorage.removeItem('pageCounter');
    localStorage.removeItem('txtsource');
}

sessionStorage

sessionStorage fungerer som localStorage, men har kun varighet så lenge vevsiden er åpen i nettleseren.

Data i sandkassa >localStorage