如何停止 window.unload 事件

How do I stop a window.unload event

我的 JQuery 中有两个作用于用户离开页面的函数。这个想法是,如果用户通过关闭浏览器离开页面,我们使用:

$(window).bind('beforeunload', function() {
   return "Are you sure you want to leave this page without saving or submitting?";
 });

现在,我们想询问用户是否只在退出页面时才保存进度,使用:

$("#logoutButton").click(function(e) {
  var result = confirm("Would you like to save before logging out?");

  if(result == true) {
     $("#savebutton").click(); //simulate a click on save before redirecting
  }

  window.location.href = "www.redirectPage.com";  //go to logout page regardless of choice
});

现在,我面临的问题是,每当用户单击注销时,它都会正确执行保存检查,但它仍然会询问用户是否要离开页面,使用 beforeunload方法。在这种情况下,有没有办法从注销按钮 click 函数内部阻止 beforeunload 触发?

您可以使用 .unbind() 删除给定事件的所有事件处理程序。在您的代码中,那将是

$(window).unbind('beforeunload');

保存后立即调用:

$("#logoutButton").click(function(e) {
    var result = confirm("Would you like to save before logging out?");

    if(result == true) {
        $("#savebutton").click(); //simulate a click on save before redirecting
        $(window).unbind('beforeunload');
    }

    window.location.href = "www.redirectPage.com";  //go to logout page regardless of choice
});