Я вызываю эту функцию, когда моя страница загружена:
function setBeacon() {
if (!navigator.sendBeacon) {
alert("No navigator beacon available. This is a critical bug which must be fixed.");
}
else
{
if ('beforeunload' in window) {
$(window).on('beforeunload', function() {
generateFormSendBeacon();
return undefined;
});
} else if ('onpagehide' in window) {
alert("on page hide");
window.addEventListener("pagehide", function() {
generateFormSendBeacon();
return undefined;
});
} else {
alert("Neither beforeunload or onpagehide events are available. Please report this to John, with details about your browser.");
}
}
Это отлично работает на рабочем столе.Я использую navigator.sendBeacon в функции generateFormSendBeacon ().Это отправляет это правильно (у меня есть точка останова на моем сервере, получающем это).Однако на мобильных устройствах, как в Safari, так и в Chrome, событие beforeunload не существует. Но, согласно Apple, вместо этого мы должны использовать pagehide. Отображается предупреждение «на странице скрыть»;iOS имеет доступ к этому событию.Однако событие никогда не запускается, так как я никогда не достигаю точки останова на моем сервере.Снова;тестируя тот же путь кода на рабочем столе, он работает нормально.Как обнаружить разгрузку страницы на iOS?