Вы не можете сделать это надежным способом, в зависимости от браузера и задержки, ваш XmlHttpRequest, скорее всего, будет уничтожен до его фактического завершения.
Производители браузеров хотят (правильно, imo) визуализировать следующую страницу как можно быстрее. onbeforeunload
и onunload
- это события очистки, предназначенные для быстрого удаления любых оставшихся переменных, они не предназначены для ожидания ... так что браузер этого не делает. Поскольку сборка мусора в новых браузерах также значительно улучшилась, у браузера еще меньше причин ждать этих событий.
Вы можете отправить запрос в событии window.onbeforeunload
... но попадет ли он на сервер? Может быть.