javascript - 如何在浏览器崩溃时清除本地存储?

标签 javascript

我有一个具有实时聊天功能的应用程序。当它打开时,聊天位于一个新的弹出窗口中。当此窗口打开时,我需要阻止用户打开另一个聊天窗口(他们一次只能进行一个聊天)。所以,我有一个简单的标志,加载弹出窗口时会触发以下代码:

localStorage.setItem('chatOpen', true);
window.onunload = function() {
    localStorage.setItem('chatOpen', false);
};

我在打开弹出窗口之前检查了这个标志。它正常工作正常,但如果浏览器崩溃,window.onunload 事件不会触发,然后用户永远无法再次打开聊天弹出窗口。我该如何解决这个问题?

最佳答案

如果稍微改变一下逻辑会怎样:启动一个计时器,每秒更新一次时间戳......而在另一边,如果当前时间 - 时间戳> 1 秒,则意味着最后一页已关闭

伪代码:

on load : 
 if localStorage has value with key chattimestamp and datetime.now -localstorage[chattimestamp] < 1 sec
      another instance is oppened
 else
    settimer that every 1 sec update timestamp to localstorage[chattimestamp]

我认为你可以选择1秒以上,实际上5-10秒应该可以

关于javascript - 如何在浏览器崩溃时清除本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517434/

相关文章:

Javascript,控制 onbeforeunload 标签

php - 在 codeigniter 中为日期表单输入字段

javascript - 使用 JavaScript 从干净/SEO 友好的 URL 获取查询字符串参数

javascript - 是否有可在 IE 中使用的 HTML SELECT 的全功能下拉替代品?

javascript - 从 JQuery 动态选择并填充输入值

javascript - 在 Chrome 的 Javascript 中使用 Android 共享 Intent ?

javascript - 如何在 OpenLayers3 中将图 block 层居中

javascript - 从数组中删除不会更新变量内的引用?

javascript - 整个网页的默认按钮响应 ENTER 按键

javascript - 光滑 slider 问题 : displaying thumbnails in vertical columns