如何在浏览器崩溃时清除localStorage?

时间:2015-05-28 21:30:34

标签: javascript

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

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

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

1 个答案:

答案 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秒就可以了