В нашем веб-приложении мы используем вызов ajax, который запускается по событию beforeunload, чтобы отследить, продолжает ли пользователь работать с определенной частью информации. Это выглядит примерно так:
$(window).on('beforeunload', function() {
$.ajax({
async: false,
url: "../orderInformation/assignOrder",
data: {
orderId: orderId,
shouldAssign: false
}
});
console.info("Handled beforeunload");
});
До сегодняшнего дня это работало нормально в Chrome, IE и Firefox. Начиная с версии Chrome 73.0.3683.103, вызов Ajax больше не запускается, хотя остальная часть JS в этом обработчике выполняется. То есть сообщение выводится на консоль.
Панель инструментов разработчика Chrome не показывает вызов AJAX, выполняемый в версии 73.0.3683.103, и я подтвердил, что наш веб-сервер также не получил запрос. Однако, когда я запускаю тот же код в Chrome 73.0.3683.86, он запускает запрос Ajax, и веб-сервер получает его! Я подтвердил, что это изменение касается как Mac OS, так и Windows.
Что изменилось в Chrome 73.0.3683.103, что вызвало эту проблему? И / или как мне это исправить?
На это обратили наше внимание ряд обращений в службу поддержки от наших клиентов, поскольку это отрицательно сказалось на работе нашего приложения. Впервые за свою 11-летнюю карьеру в качестве разработчика веб-приложений мне пришлось просить наших пользователей перейти на Internet Explorer.