0

我有一个 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 后端。为此,我认为我还可以注册用户实际离开后部时触发的卸载事件。如果用户重新加载后台或导航到应用程序中的不同 url,则此方法有效。但是,当用户导航到另一个页面或关闭浏览器时,不会触发该事件,或者至少我看不到它。

我怎样才能捕捉到这些事件并确保我的休息电话仍然通过?

4

1 回答 1

1

您可以在标签关闭之前调用一个函数,如下所示:

$window.onbeforeunload = function (arg) {
  $scope.onclose();
}

现在您可以在关闭功能中使用所有其余的 api

有关更多详细信息和其他方法,请点击此链接

于 2018-09-25T07:02:16.320 回答