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

标签 javascript jquery onbeforeunload

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

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

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

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

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

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

最佳答案

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

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

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

关于javascript - 如果用户由于第二个处理程序中的对话框而停留在页面上,则跳过 beforeunload 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617601/

相关文章:

javascript - GetElementById 设置为 null 而不是 int

javascript - 如何仅验证年.月格式的体验(默认为 0.00)?

javascript - cakePHP项目中的Jquery Ajax请求返回禁止(403)

javascript:Internet Explorer 在表单提交/页面卸载之前不发送 ajax 调用

javascript - 发布一个ROS消息geometry/Point32需要什么格式

javascript - 如何在使用 "select all"运算符(即使用 jquery 的 "* ")时获取被单击的元素?

javascript - 如何使输入字段看起来像普通文本

jquery - 在页面卸载/浏览器关闭之前运行动画

javascript - Javascript 中的公共(public)类对象监听器有问题吗?

javascript - 如何在 JavaScript 中将值从一个 html 页面传递到另一个 html 页面?