我有一个具有实时聊天功能的应用程序。当它打开时,聊天就在一个新的弹出窗口中。当这个窗口打开时,我需要阻止用户打开另一个聊天窗口(他们一次只能进行一次聊天)。所以,我有一个简单的标志,当弹出窗口加载时会触发以下代码:
localStorage.setItem('chatOpen', true);
window.onunload = function() {
localStorage.setItem('chatOpen', false);
};
在打开弹出窗口之前我检查了这个标志。它工作正常,但如果浏览器崩溃,window.onunload事件不会触发,然后用户再也无法打开聊天弹出窗口。我该如何解决这个问题?
答案 0 :(得分:3)
如果稍微更改一下逻辑怎么办:启动一个计时器,每秒更新一次时间戳......另一方面,如果current time - timestamp > 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秒就可以了