web-dev-qa-db-fra.com

Quand sessionStorage est-il réellement effacé?

J'ai du javascript qui vérifie un objet dans sessionStorage et l'utilise pour remplir un champ de saisie. Je l'utilise pour aider les utilisateurs de mon site s'ils laissent le formulaire inachevé et qu'ils s'éloignent ou essaient de soumettre le formulaire après l'expiration de leur session.

Ma compréhension est que sessionStorage n'est PAS lié à une session serveur, il est lié au navigateur, donc si j'ai une nouvelle session sur le serveur ou non, cela n'est pas pertinent.

Cela a été pris en charge lors de mes premiers tests il y a quelques mois. Cependant, il semble que ce ne soit plus le cas, et lorsque j'efface mon cookie de session et recharge ma page, mon sessionStorage est également effacé. Cela utilise à la fois Chrome et Firefox.

Je ne veux pas utiliser localStorage car cela pourrait causer des problèmes avec les ordinateurs partagés, tandis que sessionStorage sera effacé lorsque les fenêtres du navigateur seront fermées.

JS pour obtenir la valeur de mon objet stocké

JSON.parse(sessionStorage.getItem("draftPost") || null);

JS pour enregistrer la valeur

$("#wallText").on("change",function(){
            sessionStorage.setItem("draftPost",JSON.stringify(draftPost));
        });
16
northernMonkey

Quelque chose à garder à l'esprit avec sessionstorage sur mobile safari.

Comme indiqué par le doc mozila.org mentionné par timolawl:

Remarque: depuis iOS 5.1, Safari Mobile stocke les données sessionStorage dans le dossier cache, qui est soumis à un nettoyage occasionnel, à la demande du système d'exploitation, généralement si l'espace est court.

Ce nettoyage a lieu trop fréquemment lors d'un safari mobile et toutes les variables de stockage de session sont détruites pour tous les onglets ouverts.

Par exemple, avoir disons 5 onglets ouverts, puis charger une nouvelle page contenant beaucoup de javascript et de css provoquera le nettoyage, détruisant toutes les variables de sessionstorage.

Cependant, les variables de stockage local sont conservées.

En outre, lors d'un safari (je pense à la fois sur ordinateur et sur mobile), la navigation en privé empêchera d'utiliser le stockage local ou le stockage de session.

5
rockmo

Le stockage de session est effacé à la fermeture du navigateur. Il persiste pendant les rechargements et les restaurations de pages. Voir: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

5
timolawl