Основная проблема с обработчиками unload
- это аналитические трекеры, которые делают синхронный XHR для отправки последней части данных отслеживания.Синхронный XHR блокирует переход к следующей странице, пока он не завершится, следовательно, это массивный анти-паттерн.
Вместо этого следует использовать navigator.sendBeacon
(https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon). Этот API был создан для решения именно этой проблемы, но поскольку он новый, он не поддерживается повсеместно (особенно в IE11 отсутствует поддержка).
(Синхронизация XHR долгое время использовалась для этого варианта использования, чтобы гарантировать выполнение HTTP-вызова; асинхронный код в обработчиках выгрузки не будет выполнен, а асинхронные XHR, выпущенные до отмены навигации, могут быть отмененыпри навигации.)