Хочу отправить запрос на сервер при закрытии вкладки, что пользователь не в сети. Параметр online = 0.
Стек react, php, mysql. Доступа к серверу нет, хостинг обычный.
useEffect(() => {
const handleBeforeUnload = (event) => {
QDB.edit(manager.id, { online: 0, logout_date: D_TimeNow(), navigator: navigator.userAgent }, 'users');
};
window.addEventListener('beforeunload', handleBeforeUnload);
return () => { window.removeEventListener('beforeunload', handleBeforeUnload); };
}, []);
Все ок, однако браузер не различает перезагрузку страницы, закрытие всего браузера, закрытие конкретной вкладки - как разные действия. Мне нужно, чтобы только при закрытие владки отправлялся запрос к БД.
Как проигнорировать перезагрузку страницы?
В инетах пишут про sessionStorage. Не получилось.
const sessionSecondLoad = sessionStorage.getItem('sessionSecondLoad');
if (!sessionSecondLoad) sessionStorage.setItem('sessionSecondLoad', 'true');
// Функция размонтирования компонента
const handleBeforeUnload = (event) => {
sessionStorage.getItem('sessionSecondLoad'); // будет равна актуальному значению true - то есть в момент закрытия не будет удалена, поэтому не могу понять, что это именно закрытие вкладки, а не перезагрузка
}