有什么方法可以在点击onbeforeunload确认对话框OK按钮后执行一些操作

Is there any way to perform some operation just after clicking the onbeforeunload confirmation dialog box OK button

我有以下代码:

var exitHandler=function(){
    return "Are you sure you want to move from this page.";
}

angular.element($window).bind("beforeunload", exitHandler);

当我关闭浏览器选项卡时,它会打开一个弹出确认窗口:

"Are you sure you want to unload this page ?"

到这里没问题,但我想执行一些 API 调用,当用户单击 OK 按钮时,而不是 取消按钮。有什么办法吗?我必须在单击 OK 按钮后执行此操作:

Participant.setDorateStatus({id:localData.userId},{dorate2status:true})
                .$promise.then(function(data) {
                         console.log(data)
                         endExperiment=data;

                })
                .catch(function(err) {
                        if (err.status != 401)
                        $scope.addNotification("something went wrong.", "danger", 5000);
    
                }) 

并且我希望当 API 调用 return 成功时,选项卡将关闭,如果 return 出错,选项卡将保持未关闭状态。

我个人搜索了很多相同的内容,这是我发现最有帮助的 link。 Is it possible to capture the user's answer when using onbeforeunload confirmation?

正如上面link中所解释的,只有在按下OK确认后才会执行卸载。所以你可以在那里写你的函数。这又是一次不幸,因为无法保证浏览器会 运行 卸载事件中的脚本。他们通常不会。

有些逻辑如果不依赖浏览器就能搞定就更好了。