如果用户由于第二个处理程序中的对话框而停留在页面上,则跳过加载前处理程序

Skip beforeunload handler if user stays on page due to dialog within second handler

本文关键字:程序 前处理 加载 停留在 用户 第二个 处理 对话框 如果      更新时间:2024-06-27

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

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

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

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

我如何保证第二个处理程序总是首先被调用,并且在用户决定留在页面上的情况下不会调用第一个处理程序?

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

在这种情况下,您可以使用window.conf。如(伪代码)

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

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

相关文章: