sessionStorage何时实际清除?

nor*_*key 18 javascript jquery html5 session-storage

我有一些javascript来检查sessionStorage中的对象,并使用它来重新填充输入字段.我使用它来帮助我的网站上的用户,如果他们离开表单未完成,并导航或尝试在他们的会话过期后提交表单.

我的理解是sessionStorage没有链接到服务器会话,它链接到浏览器,所以我是否在服务器上有新的会话是无关紧要的.

几个月前我最初测试时支持了这一点.但是,似乎不再是这种情况,当我清除会话cookie并重新加载我的页面时,我的sessionStorage也被清除了.这是使用Chrome和Firefox.

我不想使用localStorage,因为这可能会导致共享计算机出现问题,而当浏览器窗口关闭时,sessionStorage将被清除.

JS获取我存储对象的值

JSON.parse(sessionStorage.getItem("draftPost") || null);
Run Code Online (Sandbox Code Playgroud)

JS保存价值

$("#wallText").on("change",function(){
            sessionStorage.setItem("draftPost",JSON.stringify(draftPost));
        });
Run Code Online (Sandbox Code Playgroud)

tim*_*awl 6

当浏览器关闭时,会话存储将被清除。它在页面重新加载和还原时持续存在。请参阅:https//developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage


小智 5

在移动游猎中使用sessionstorage时需要注意的事项.

正如timolawl提到的mozila.org文件所述:

注意:自iOS 5.1以来,Safari Mobile将localStorage数据存储在缓存文件夹中,该文件夹可能会在操作系统的要求下偶尔进行清理,通常是在空间不足的情况下.

这种清理在移动safari中频繁发生,并且所有打开的选项卡都会销毁所有sessionstorage变量.

例如,打开5个标签,然后加载一个包含大量java和css的新页面将导致清理,销毁所有会话存储变量.

但是,保留了localstorage变量.

此外,在safari上(我相信桌面和移动设备),私密浏览将阻止使用localstorage或sessionstorage.