【发布时间】:2019-01-03 13:42:34
【问题描述】:
我有一段代码在本地存储中存储一个布尔标志,以指示是否已经在浏览器的选项卡中打开了 Web 应用程序的实例。
我依靠beforeunload 事件来确保在用户关闭选项卡时清除本地存储标志。
须藤代码:
if (!isOneTabOpen) {
localStorage.setItem(isOpenTabKey, 'true');
window.addEventListener(
'beforeunload',
() => {
localStorage.removeItem(isOpenTabKey);
},
false,
);
} else {
window.alert(
'One more page is open',
);
window.location.replace('about:blank');
}
我网站的一些用户抱怨他们无法再打开该网站,并且他们看到警告说 “还有一个页面正在打开”,即使他们还没有打开该网站。
我尝试了不同的方法使 Chrome 崩溃,但我从未设法进入 localStorage 保持isOpenTabKey 设置的状态。
是否有任何已知的情况,beforeunload 事件不会触发,因此我的本地存储处于损坏状态,可能导致此问题?
【问题讨论】:
-
它只发生在 Chrome 上吗?
-
@Armel 它发生在 Chrome 中,是的,我不知道问题是否存在于其他浏览器中。
标签: javascript google-chrome web-applications