Почему обновление браузера и закрытие событий не работает для IE и Safari - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно позвонить logout function при закрытии окна браузера.Он отлично работает в Chrome, не работает в IE и Safari.

Я попробовал следующий код:

window.onbeforeunload = function (e) {
    // Your logic to prepare for 'Stay on this Page' goes here
    var evtobj = window.event ? event : e;
    if (evtobj == e) {
        //firefox
        if (!evtobj.clientY) {
           //server call
        }
    }
    else {
        //IE
        if (evtobj.clientY < 0) {
           //server call
        }
    }
    //return "Please click 'Stay on this Page' and we will give you candy";
};

Я пробовал несколько других способов, но они не работали.Пожалуйста, сообщите.

1 Ответ

0 голосов
/ 21 февраля 2019

В вашем дизайне что-то не так, вы НЕ ДОЛЖНЫ полагаться на клиентскую ловушку для выхода из системы.Существует миллиард причин, по которым это событие не могло быть выполнено.Просто ограничьте событие onbeforeunload выполнением информационного содержимого, а не критических действий.

Кстати:

  • Не возвращайтесь в ваше событие beforeunload!Это создает некоторую проблему в IE
  • Используйте window.sessionStorage, чтобы некоторые данные сохранялись до тех пор, пока пользователь не закроет вкладку
  • Используйте сеансовые куки-файлы для хранения конфиденциальных данных вашего пользователя, таких как токены, и проверьте, еслипользователь авторизован на сервере, а не на клиенте
...