【问题标题】:Way to know if user clicked Leave on a Javascript onbeforeunload Dialog?如何知道用户是否在 Javascript onbeforeunload 对话框上单击了离开?
【发布时间】:2018-09-25 09:30:06
【问题描述】:

我有一个 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 后端。为此,我认为我还可以注册用户实际离开页面时触发的卸载事件。但是,当用户导航到另一个页面或关闭浏览器时,不会触发该事件,或者至少我看不到它。

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

【问题讨论】:

  • 有很多类似的问题——你不能
  • 除非有未保存的数据,否则不要使用这些事件(这对用户来说非常烦人)。而是保存数据,因为它们已准备就绪。

标签: javascript jquery angularjs dom-events onbeforeunload


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多