首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浏览器挂起时sessionStorage未被清除

浏览器挂起时sessionStorage未被清除
EN

Stack Overflow用户
提问于 2017-01-19 10:09:40
回答 1查看 1.3K关注 0票数 0

我构建了一个应用程序,在这个应用程序中,我将从服务器接收到的令牌保存到客户端的sessionStorage中。会话结束时间为30 30mnts。该应用程序在给定的场景中运行良好:

正确工作

  1. 用户打开应用程序。
  2. 空闲30分钟,然后单击任何链接
  3. 会话到期消息显示良好。
  4. 用户关闭该窗口并启动一个新窗口,应用程序将成功运行。

但是,下面的场景没有正确地考虑分配给新窗口的新sessionStorage (不正确的行为):

  1. 用户打开应用程序。
  2. 闲着5-6小时或一夜之间
  3. 用户第二天回来并尝试单击陈旧的会话。
  4. 浏览器挂起,没有响应
  5. 用户关闭窗口并启动一个新窗口,应用程序将显示会话超时页。用户必须刷新或重新启动页面。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-24 05:27:30

我所担心的是浏览器崩溃时,sessionStorage仍然存在。因此,我正在研究可以清除sessionStorage的修补程序,这是我在下面的代码片段中实现的:

代码语言:javascript
复制
window.addEventListener('load', function () {
      sessionStorage.setItem('good_exit', 'pending');
      setInterval(function () {
         sessionStorage.setItem('time_before_crash', new Date().toString());
      }, 1000);
   });

   window.addEventListener('beforeunload', function () {
      sessionStorage.setItem('good_exit', 'true');
   });

   if(sessionStorage.getItem('good_exit') &&
      sessionStorage.getItem('good_exit') !== 'true') {
      /*
         insert crash logging code here
     */
      alert('Hey, welcome back from your crash, looks like you crashed on: ' + sessionStorage.getItem('time_before_crash'));
   }

详细信息,请参阅以下链接:http://jasonjl.me/blog/2015/06/21/taking-action-on-browser-crashes/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41739058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档