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