Способ узнать, нажал ли пользователь «Оставить» в диалоге Javascript перед загрузкой? - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть приложение AngularJS.Там я использую следующий код, чтобы позволить пользователю подтвердить, действительно ли он / она хочет покинуть приложение:

window.addEventListener('beforeunload', function (e) {
    e.preventDefault();
    e.returnValue = '';
    return 'Do you really want to leave?'
});

window.addEventListener('unload', function (e) {
    console.log('unload');
    myRestService.close();
    e.preventDefault();
    e.returnValue = '';
});

Первая часть работает хорошо.Браузер отображает окно сообщения, в котором пользователь должен решить покинуть страницу или остаться на ней.

Однако, если пользователь хочет покинуть страницу (нажмите кнопку выхода), я должен сделатьпозвонить в бэкэнд REST.Для этого я подумал, что могу также зарегистрироваться для события unload, которое запускается, когда пользователь фактически покидает страницу.Однако событие не запускается, или, по крайней мере, я его не вижу, когда пользователь переходит на другую страницу или закрывает браузер.

Как я также могу перехватить эти события и убедиться, что мой вызов остальныхвсе еще проходит?

1 Ответ

0 голосов
/ 26 сентября 2018

Единственное, о чем я могу думать, это использовать угловую "$ on"

     $scope.$on('destroy', function() {
         someService.hitThatRestAPI();
         // I didn't add a ".then" to the end since they're already off the page
     })

Дайте мне знать, если это работает!Мне любопытно.

Я предполагаю, что вы используете angularjs, так как у вас есть тег angularjs.

...