sessionStorage

Stockage du navigateur pour des paires clé-valeur qui ne fonctionne que dans l’onglet actuel et disparaît à sa fermeture.

Renvoie
getItem() renvoie la chaîne enregistrée ou null. Les autres méthodes renvoient undefined.
Sur cette page

Exemple

#
JavaScript
sessionStorage.setItem('signupStep', 2)
sessionStorage.setItem('signupData', JSON.stringify({ name: 'Léa', course: 'JavaScript' }))

console.log(sessionStorage.getItem('signupStep'))
console.log(JSON.parse(sessionStorage.getItem('signupData')).course)

sessionStorage.removeItem('signupStep')
console.log(sessionStorage.getItem('signupStep'))
Résultat
2
JavaScript
null

Les exemples de cette page s’exécutent dans un cadre isolé où sessionStorage n’est pas disponible, donc ce code ne s’exécute pas dans l’aperçu. Sur une page normale, il affiche le résultat montré ci-dessus, et les données disparaissent à la fermeture de l’onglet.

Définition et utilisation

#

sessionStorage a les mêmes méthodes que localStorage : setItem(), getItem(), removeItem(), clear() et la propriété length. Il diffère par la durée de vie des données : elles n’existent que dans un seul onglet du navigateur. Actualiser la page ne les supprime pas, mais fermer l’onglet oui.

Chaque onglet a son propre stockage de session, séparé, même quand vous ouvrez la même page dans deux onglets. sessionStorage convient donc aux données liées à une seule visite : une étape d’un formulaire à plusieurs étapes, les filtres d’une liste de cours, la position dans une longue leçon, ou le fait que l’utilisateur a déjà fermé une bannière pendant cette session.

Comme dans localStorage, les valeurs sont toujours des chaînes de caractères, donc enregistrez les objets avec JSON.stringify() et lisez-les avec JSON.parse(). Le stockage est séparé pour chaque domaine, a une limite de l’ordre de quelques mégaoctets et est accessible à chaque script de la page, donc n’y conservez ni mots de passe ni jetons.

Syntaxe

#
Syntaxe
sessionStorage.setItem(key, value)
sessionStorage.getItem(key)
sessionStorage.removeItem(key)
sessionStorage.clear()
sessionStorage.length

Paramètres

#
  • key

    chaîne

    Le nom sous lequel vous enregistrez ou lisez la valeur.
  • value

    chaîne

    La valeur à enregistrer. Les autres types seront convertis en chaîne.

Plus d’exemples

#
Filtres de la liste de cours pour la durée de la visite
JavaScript
const saved = sessionStorage.getItem('courseFilters')
const filters = JSON.parse(saved) ?? { level: 'tous', sort: 'récents' }
console.log(filters)

filters.level = 'débutant'
sessionStorage.setItem('courseFilters', JSON.stringify(filters))
console.log(sessionStorage.getItem('courseFilters'))
Résultat
{ level: 'tous', sort: 'récents' }
{"level":"débutant","sort":"récents"}

Lors de la première visite dans cet onglet, rien n’est encore enregistré : getItem() renvoie null, JSON.parse(null) donne aussi null, donc l’opérateur ?? fournit les filtres par défaut. Après une actualisation de la page, les filtres choisis restent, et un nouvel onglet repart avec les filtres par défaut.

Bannière fermée seulement jusqu’à la fin de la visite
JavaScript
const banner = document.querySelector('#promo')

if (sessionStorage.getItem('promoClosed') === 'yes') {
  banner.hidden = true
}

document.querySelector('#close-promo').addEventListener('click', () => {
  banner.hidden = true
  sessionStorage.setItem('promoClosed', 'yes')
  console.log('La bannière ne reviendra que dans un nouvel onglet')
})
Résultat
La bannière ne reviendra que dans un nouvel onglet

Le résultat apparaît après un clic sur le bouton qui ferme la bannière. En naviguant entre les pages dans le même onglet, la bannière reste masquée, et elle réapparaît à l’ouverture de la page dans un nouvel onglet.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Choisissez sessionStorage pour les données d’une seule visite (étape de formulaire, filtres), et localStorage pour les réglages qui doivent survivre à la fermeture du navigateur.
  • Dupliquer un onglet copie son sessionStorage dans le nouvel onglet, mais à partir de ce moment les deux stockages sont indépendants.
  • Entourez l’accès au stockage d’un bloc try...catch. Dans certains modes de navigation privée et dans les cadres sans accès aux données du site (comme l’aperçu de cette page), la lecture lève une erreur SecurityError.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.