16

我有一个页面,用户可以在其中拖放对象并将它们保存为图像。当用户离开页面时,会触发beforeunload事件。现在,这种情况每次都会发生。我想要做的是,如果用户保存了他的工作,则取消绑定事件,这样消息可能不会再次弹出。为此,我使用了 jQuery中的unbind方法。但是,它似乎不起作用。下面是绑定和解除绑定事件的代码。

var notSaved = function()
{
   return 'You have not yet saved your work.Do you want to continue? Doing so, may cause loss of your work' ;
}
$(window).bind('beforeunload', notSaved);

调用 save 方法后,

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

我在这里做错了什么?
此外,save 方法实际上是一个 Ajax 调用。

4

2 回答 2

36

beforeunload就绑定而言,这种方式不能可靠地工作。您应该在本地分配它:

window.onbeforeunload = function() {
  return 'You have not yet saved your work.Do you want to continue? Doing so, may cause loss of your work' ;
}

在您的保存方法中:

window.onbeforeunload = null;
于 2010-12-16T09:50:12.090 回答
0
const windowReloadBind = function(message) {
    window.onbeforeunload = function(event) {
        //--- Your logic
        return 'your output';
    }
};

const windowReloadUnBind = function() {
    window.onbeforeunload = function() {
      return null;
    };
};
于 2019-11-18T04:03:48.967 回答