Мне нужно использовать navigator.sendBeacon()
при выгрузке окна, чтобы мой сервер знал, что клиент закрыл свое окно. Я искал везде, и это просто не работает для меня.
Для справки, решение в этом посте тоже не сработало.
У меня есть компонент App, который оборачивает весь мой проект. Я пытаюсь установить событие unload для componentDidMount()
метода жизненного цикла, и оно просто не сработает.
componentDidMount() {
window.addEventListener("beforeunload", this.unload);
}
componentWillUnmount() {
window.addEventListener("beforeunload", this.unload);
}
unload(e) {
e.preventDefault();
e.returnValue = 'test';
navigator.sendBeacon(`http://localhost:8080/window-closed/${this.props.username}`);
return 'test';
}
Я ожидаю, что сервер получит вызов AJAX, и окно предложит пользователю выполнить «тест» до закрытия окна. На самом деле окно просто закрывается как обычно.
ПРИМЕЧАНИЕ: операторы return 'test'
& e.returnValue = ''
предназначены исключительно для тестирования. Меня интересует только запрос AJAX.
Любая помощь будет высоко ценится.