Table des matières

Stocker des données (non critiques) chez le client (HTML5/Javascript)

Jusqu'ici, pour cette tâche, nous avions pris l'habitude de recourir à ou des cookies. Toutefois, suivant les besoins, les cookies ne sont pas l'outil le plus adéquat :

Il existe deux variables distinctes suivant la durée de vie à attribuer à vos données :

Par contre, ces espaces de stockage possèdent quelques contraintes :

Attention : n'oubliez pas, qu'au même titre qu'un cookie, ces espaces de stockage sont parfaitement accessibles, lisibles et manipulables par le client. Ne les utilisez pas pour conserver des données significatives.

Note : ci-dessous, pour les exemples, j'utilise localStorage mais elle est parfaitement interchangeable avec sessionStorage.

Tester si le localStorage est supporté

if (localStorage) {
    // localStorage est disponible
} else {
    // localStorage n'est pas disponible
}

Tester si une clé existe

if ('foo' in localStorage) {
    // la clé 'foo' est présente dans localStorage
} else {
    // la clé 'foo' n'est pas présente dans localStorage
}

Récupérer la valeur d'une clé

var count = localStorage['count'];
// ou
var count = localStorage.getItem('count');
// ou (solution non valable dans certains cas)
var count = localStorage.count;

Ajouter ou écraser la valeur d'une clé

localStorage['count'] = parseInt(localStorage['count']) + 1;
// ou
localStorage.setItem('count', parseInt(localStorage.getItem('count')) + 1);
// ou (solution non valable dans certains cas)
localStorage.count = parseInt(localStorage.count) + 1;

Supprimer une clé

Pour supprimer la clé count :

localStorage.removeItem('count');
// ou
delete localStorage['count'];
// ou (solution non valable dans certains cas)
delete localStorage.count;

Supprimer l'ensemble des clés

localStorage.clear();

Cela supprime bien évidemment uniquement l'espace de stockage (permanent ici) que le navigateur associe à votre propre site, ce n'est pas global, ça n'impactera pas les données qu'il conserve pour d'autres sites.