У меня есть фрагмент кода, который хранит логический флаг в локальном хранилище, чтобы указать, есть ли уже экземпляр веб-приложения, открытый на вкладке браузера.
Я полагаюсь на событие 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
не сработало, и, следовательно, мое локальное хранилище осталось в поврежденном состоянии, что потенциально могло вызвать эту проблему?