Dal punto di vista delle API utilizzabili con JavaScript la specifica mette a disposizione l’oggetto
applicationCache, proprietà dell’oggetto
window, che consente di gestire la cache locale attraverso le seguenti proprietà, funzioni ed eventi.
Per le
proprietà abbiamo
status, a sola lettura e di tipo
unsigned short, che ritorna lo stato della cache tra:
- UNCACHED (0), indicante la non associatività di una pagina alla cache;
- IDLE (1), indicante l’associatività di una pagina alla cache, già aggiornata;
- CHECKING (2), indicante una verifica di aggiornamento del file manifesto di una pagina già associata a una cache;
- DOWNLOADING (3), indicante un download di risorse aggiornate di una pagina già associata a una cache;
- UPDATEREADY (4), indicante la fine del downloading delle nuove risorse e la possibilità di utilizzarle per una pagina già associata a una cache;
- OBSOLETE (5), indicante che per una pagina già associata a una cache il file di manifesto è mancante.
Tra le
funzioni,
void update() permette di inviare una richiesta di aggiornamento della cache, che consentirà una verifica del file di manifesto per rilevare se occorre scaricare nuovi file di risorse;
void swapCache(), permette di caricare la nuova cache e rimuovere la vecchia se tale cache è cambiata in virtù del download di risorse aggiornate. Tale funzione deve essere invocata solo se lo status della cache è in modalità
UPDATEREADY, altrimenti viene generato un errore.
Per quanto concerne gli
eventi, invece,
onchecking viene generato quando il browser verifica se è presente una versione aggiornata del file manifesto, oppure la prima volta che quest’ultimo è scaricato;
onerror è generato a causa di un errore occorso per l’impossibilità di trovare il file manifesto, oppure qualche file di risorsa indicato;
onnoupdate si genera quando non è occorso alcun cambiamento del file di manifesto;
onobsolete è generato a causa di un file di manifesto mancante.
Gli eventi legati allo scaricamento sono:
ondownloading, generato quando il browser per la prima volta sta iniziando il download delle risorse oppure durante una fase di aggiornamento;
onprogress, generato durante la fase di scaricamento dei file di risorse;
onupdateready, generato al termine della fase del downloading delle risorse aggiornate;
oncached, generato al termine dello scaricamento delle risorse e dopo che le stesse sono state immagazzinate nella cache.
Abbiamo, infine, la possibilità di utilizzare gli eventi
online e
offline dell’oggetto
window, che sono generati se il browser è posto rispettivamente in modalità connessa o disconnessa, e la proprietà
onLine dell’oggetto
navigator, che consente di sapere se il browser è online.
Mettiamo, ora, in pratica quanto sin qui illustrato mostrando un programma, che creerà un album di immagini utilizzabile anche quando non si è online. Esso avrà il seguente file HTML, di cui mostriamo i punti più significativi (
offline.html):
<!DOCTYPE html>
<html lang="it" manifest="offline.manifest">
…
<body>
<div id="img_placeholder">
</div>
<div id="navigator">
<div id="left" title="go prev"></div>
<div id="right" title="go next"></div>
</div>
<div id="status" title="browser connection mode"></div>
<div id="cache_status" title="status area for application cache"></div>
<div id="update" title="update cache..."></div>
</body>
…
Oltre all’indicazione del file manifesto
offline.manifest, vi sono i seguenti
div: quello centrale
img_placeholder, che visualizzerà l’immagine corrente; il
div navigator per la navigazione avanti/indietro delle immagini; il
div cache_status, che visualizzerà tutti gli stati in cui si potrà trovare la cache; il
div update con cui si potrà invocare programmaticamente la funzione
update; il
div status, che visualizzerà un’immagine indicante lo stato online/offline del browser.
- Pubblicazioni correlate:
- 10-05-2010 Guida ad HTML5: storia della sua nascita (1/3)
- 11-05-2010 Guida ad HTML5: storia della sua nascita (2/3)
- 17-05-2010 Guida ad HTML5: storia della sua nascita (3/3)
- 18-05-2010 Guida ad HTML5: supporto dei browser (1/6)
- 24-05-2010 Guida ad HTML5: supporto dei browser (2/6)
- 25-05-2010 Guida ad HTML5: supporto dei browser (3/6)
- 31-05-2010 Guida ad HTML5: supporto dei browser (4/6)
- 01-06-2010 Guida ad HTML5: supporto dei browser (5/6)
- 07-06-2010 Guida ad HTML5: supporto dei browser (6/6)
- 08-06-2010 Guida ad HTML5: l'elemento canvas, l'area del disegno
- 14-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (1/4)
- 18-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (2/4)
- 21-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (3/4)
- 25-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (4/4)
- 28-06-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (1/4)
- 02-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (2/4)
- 05-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (3/4)
- 09-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (4/4)
- 12-07-2010 Guida ad HTML5: l’elemento canvas, manipolazione diretta dei pixel (1/2)
- 16-07-2010 Guida ad HTML5: l’elemento canvas, manipolazione diretta dei pixel (2/2)
- 19-07-2010 Guida ad HTML5: l’elemento canvas, sfumature
- 23-07-2010 Guida ad HTML5: l’elemento canvas, ombreggiature
- 26-07-2010 Guida ad HTML5: l’elemento canvas, compositing (1/2)
- 30-07-2010 Guida ad HTML5: l’elemento canvas, compositing (2/2)
- 30-08-2010 Guida ad HTML5: l’elemento canvas, stili di linea e pattern (1/2)
- 03-09-2010 Guida ad HTML5: l’elemento canvas, stili di linea e pattern (2/2)
- 06-09-2010 Guida ad HTML5: multimedialità, concetti propedeutici (1/2)
- 10-09-2010 Guida ad HTML5: multimedialità, concetti propedeutici (2/2)
- 13-09-2010 Guida ad HTML5: multimedialità, l'elemento video
- 17-09-2010 Guida ad HTML5: multimedialità, gli elementi audio e source
- 20-09-2010 Guida ad HTML5: multimedialità, scripting dei media element (1/6)
- 24-09-2010 Guida ad HTML5: multimedialità, scripting dei media element (2/6)
- 27-09-2010 Guida ad HTML5: multimedialità, scripting dei media element (3/6)
- 01-10-2010 Guida ad HTML5: multimedialità, scripting dei media element (4/6)
- 04-10-2010 Guida ad HTML5: multimedialità, scripting dei media element (5/6)
- 08-10-2010 Guida ad HTML5: multimedialità, scripting dei media element (6/6)
- 11-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (1/7)
- 15-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (2/7)
- 20-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (3/7)
- 22-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (4/7)
- 25-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (5/7)
- 29-10-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (6/7)
- 05-11-2010 Guida ad HTML5: multimedialità, realizzazione di un player video (7/7)
- 08-11-2010 Guida ad HTML5: storage per le web application (1/3)
- 12-11-2010 Guida ad HTML5: storage per le web application (2/3)
- 15-11-2010 Guida ad HTML5: storage per le web application (3/3)
- 19-11-2010 Guida ad HTML5: eseguire codice JavaScript in background (1/3)
- 22-11-2010 Guida ad HTML5: eseguire codice JavaScript in background (2/3)
- 26-11-2010 Guida ad HTML5: eseguire codice JavaScript in background (3/3)
- 29-11-2010 Guida ad HTML5: applicazioni web offline (1/5)
- 03-12-2010 Guida ad HTML5: applicazioni web offline (2/5)
- 10-12-2010 Guida ad HTML5: applicazioni web offline (4/5)
- 13-12-2010 Guida ad HTML5: applicazioni web offline (5/5)
- 17-12-2010 Guida ad HTML5: la geolocalizzazione (1/4)
- 20-12-2010 Guida ad HTML5: la geolocalizzazione (2/4)
- 24-12-2010 Guida ad HTML5: la geolocalizzazione (3/4)
- 27-12-2010 Guida ad HTML5: la geolocalizzazione (4/4)
- 31-12-2010 Guida ad HTML5: microdata (1/4)
- 03-01-2011 Guida ad HTML5: microdata (2/4)
- 10-01-2011 Guida ad HTML5: microdata (3/4)
- 14-01-2011 Guida ad HTML5: microdata (4/4)
- 17-01-2011 Guida ad HTML5: drag and drop (1/5)
- 21-01-2011 Guida ad HTML5: drag and drop (2/5)
- 24-01-2011 Guida ad HTML5: drag and drop (3/5)
- 28-01-2011 Guida ad HTML5: drag and drop (4/5)
- 31-01-2011 Guida ad HTML5: drag and drop (5/5)
- 04-02-2011 Guida ad HTML5: nuovi elementi semantici (1/6)
- 07-02-2011 Guida ad HTML5: nuovi elementi semantici (2/6)
- 11-02-2011 Guida ad HTML5: nuovi elementi semantici (3/6)
- 14-02-2011 Guida ad HTML5: nuovi elementi semantici (4/6)
- 18-02-2011 Guida ad HTML5: nuovi elementi semantici (5/6)
- 21-02-2011 Guida ad HTML5: nuovi elementi semantici (6/6)
- 25-02-2011 Guida ad HTML5: l’API di messaggistica (1/8)
- 28-02-2011 Guida ad HTML5: l’API di messaggistica (2/8)
- 04-03-2011 Guida ad HTML5: l’API di messaggistica (3/8)
- 07-03-2011 Guida ad HTML5: l’API di messaggistica (4/8)
- 11-03-2011 Guida ad HTML5: l’API di messaggistica (5/8)
- 14-03-2011 Guida ad HTML5: l’API di messaggistica (6/8)
- 18-03-2011 Guida ad HTML5: l’API di messaggistica (7/8)
- 21-03-2011 Guida ad HTML5: l’API di messaggistica (8/8)