【问题标题】:localStorage not getting cleared when system shutdown happens发生系统关闭时,localStorage 未清除
【发布时间】:2017-01-13 12:09:48
【问题描述】:

我正在使用 localStorage 跨选项卡共享数据。每当用户关闭选项卡/浏览器时,我都需要清除 localStorage。我能够做到这一点,但问题是如果用户直接关闭系统或其系统强制关闭,那么 localStorage 不会被清除。请为此提出任何解决方案。

我使用的是 localStorage 而不是 sessionStorage,因为我想跨标签共享数据。

【问题讨论】:

  • 当用户离开您的站点时,您基本上不能依赖获取和处理事件。您经常会收到beforeunload,但不能保证。所以你必须围绕它编写代码。

标签: javascript angularjs window local-storage onbeforeunload


【解决方案1】:

当用户离开您的网站时,您基本上不能依赖获取和处理事件。您经常会收到beforeunload,但不能保证。所以你必须围绕它编写代码。

每当用户关闭标签/浏览器时,我都需要清除 localStorage

听起来您想使用sessionStorage 而不是localStorage 不,sessionStorage 似乎没有在选项卡之间共享。呵呵,我以为是。

如果由于某种原因您不能使用 sessionStorage 而不是 localStorage 我建议在您的商店中存储某种“上次使用”时间戳,如果它太旧了当您的页面下次加载时,清除此时的数据。

【讨论】:

  • 谢谢克劳德。时间戳的问题是,如果用户登录应用程序并关闭系统,那么如果他在系统启动后立即尝试登录,则时间戳不会太旧。
  • @VishalGulati:确实如此,但是,这真的重要吗?在那种情况下,听起来他们正在处理崩溃或其他事情,并且无论如何都想从中断的地方继续,不是吗?
  • @Crowder:不,我不能对此进行检查。关机和重启需要 3-5 分钟。我无法清除这么长时间不活动的数据。
  • @VishalGulati:是的,所以你对它设置了比这更长的限制,他们会从中断的地方继续。有什么问题?鉴于限制,我不知道您还有其他选择。
  • @Crowder:事情是我在登录时设置了时间戳。但登录后,用户可能在应用程序内并做他的事情。这并不意味着他不活跃,我不能只清除数据。时间戳只是他上次登录时间的指示。他可能在应用程序中活跃一两个小时。我无法清除相同的内容。
【解决方案2】:

sessionStorage、localStorage 和 Cookies 都用于在客户端存储数据。每个都有自己的存储和到期限制。 sessionStorage:类似于 localStorage,但在浏览器关闭(不是选项卡)时过期。 Cookie:存储必须通过后续请求发送回服务器的数据。

【讨论】:

  • 我必须跨标签共享数据。 sessionStorage 超出范围.. 无论如何谢谢。
【解决方案3】:

如果您想清除数据,会话存储会更有帮助。您可以将数据放在 sessionStorage 对象上,只要该窗口(或选项卡)打开,该数据就会一直存在。

【讨论】:

  • 我必须跨标签共享数据。 sessionStorage 超出范围.. 无论如何谢谢。
猜你喜欢
  • 2022-01-06
  • 1970-01-01
  • 2020-09-05
  • 1970-01-01
  • 2015-04-29
  • 2022-07-14
  • 1970-01-01
  • 2016-12-31
相关资源
最近更新 更多