如何停止window.unload事件

时间:2015-01-01 20:56:52

标签: jquery

我的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方法询问用户是否要离开页面。有没有办法阻止beforeunload在这种情况下从logoutbutton click函数内部触发?

1 个答案:

答案 0 :(得分:1)

您可以使用.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
});