有没有办法在单击onbeforeunload确认对话框确定按钮后执行某些操作

时间:2015-02-12 14:06:53

标签: javascript jquery angularjs events javascript-events

我有以下代码:

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

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

当我关闭浏览器标签时。打开弹出确认信息:"您确定要卸载此页面吗?"直到这里还可以。但是我想在用户点击OK按钮时执行一些api调用,而不是在CANCEL按钮上。有没有办法做到这一点。我必须在点击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调用返回成功然后选项卡将关闭,如果它将返回错误选项卡将保持unclose。在此先感谢:)

1 个答案:

答案 0 :(得分:1)

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

如上面的链接所述,只有在按下OK确认后才执行卸载。所以你可以在那里写你的功能。再次,这是一个艰难的运气,因为没有guaratee浏览器将在卸载事件中运行脚本。他们通常不会。

如果你可以在不依赖浏览器的情况下锻炼,那就更好了。