如果用户因第二个处理程序内的对话而停留在页面上,则跳过beforeunload处理程序

时间:2016-04-14 08:28:13

标签: javascript jquery onbeforeunload

我有一个beforeunload处理程序,当用户实际导航离开页面时调用:

$(window).on("beforeunload", function () {
    cleanup();
});

然而,我的应用程序的另一部分可能会添加另一个beforeunload处理程序,它会询问用户是否因为正在进行的操作而确实要离开:

$(window).on("beforeunload", function () {
    return "Do you really want to leave";
});

我怎样才能保证,第二个处理程序将始终首先被调用,并且如果用户决定留在页面上,则不会调用第一个处理程序?

我已尝试使用unload事件。但这不起作用,因为它不会可靠地执行我的清理功能和后端调用。

1 个答案:

答案 0 :(得分:1)

您可以使用window.confirm以防万一。如(伪代码)

$(window).on("beforeunload", function () {
 var result = window.confirm('Do you really want to quit?');
 if (result) {
  cleanup();
 }
}

这样,如果用户想要退出,它将进行清理。这有用吗?>