Как последовательно получить тип навигацииJavascript

Форум по Javascript
Ответить
Anonymous
 Как последовательно получить тип навигации

Сообщение Anonymous »

мне нужно очистить некоторые данные (

Код: Выделить всё

sessionRelevantData
) в IndexedDB, когда пользователи оставляют последнюю вкладку моего приложения React. Для этого я внедрил счетчик на LocalStorage , чтобы получить количество открытых вкладок, и когда на последней вкладке запускается событие, когда я проверяю, я проверяю, что это Фактическая навигация из приложения для очистки данных в IndexedDB; Если это перезагрузка вместо навигации, данные хранятся. < /p>
Текущий код ниже: < /p>

Код: Выделить всё

useEffect(() => {
localStorage.setItem(
'tabsCount',
Number(localStorage.getItem('tabsCount') || 0) + 1,
);

const cleanupFn = e => {
const isReload =
_.get(
e.currentTarget.performance.getEntriesByType('navigation'),
'0.type',
) === 'reload';
const tabsCount = Number(localStorage.getItem('tabsCount'));
localStorage.setItem('tabsCount', tabsCount - 1);

if (!isReload && tabsCount < 2) {
indexedDB.deleteDatabase('sessionRelevantData');
}
};
const eventType = isIOS() ? 'pagehide' : 'beforeunload';
window.addEventListener(eventType, cleanupFn);
return () => {
window.removeEventListener(eventType, cleanupFn);
};
}, []);
< /code>
Этот код работает, как и ожидалось, на начальной вкладке. Проблема возникает, когда пользователь загружает начальную вкладку, откройте ссылку из приложения на новой вкладке, закрывает первую вкладку, а затем переходит к перезагрузке второй вкладки. По какой -то причине значение _.get (e.currenttarget.performance.getEntriesBytype ('navigation'), '0.type') 
после перезагрузки второй вкладки vavigate вместо перезагрузки . Это не ожидаемое поведение, как задокументировано в веб -документах MDN. Навигация или нет во второй вкладке, не меняет такого поведения.
Есть ли способ последовательно получить правильный тип навигации?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ation-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»