IOS pagehide не срабатывает.Не удается обнаружить выгруженную страницу - PullRequest
0 голосов
/ 15 февраля 2019

Я вызываю эту функцию, когда моя страница загружена:

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?

1 Ответ

0 голосов
/ 17 июня 2019

Некоторые браузеры игнорируют диалоговые окна при выгрузке страницы .Это ожидается.

Возможно, вы столкнулись с проблемой WebKit # 193508 .

...