如何知道用户是否单击了“在卸载对话框前打开Java脚本”?

时间:2018-09-25 09:30:07

标签: javascript jquery angularjs javascript-events onbeforeunload

我有一个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 :(得分:0)

我唯一能想到的就是利用angular的“ $ 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标签。