Невозможно отменить привязку окна к событию beforeunload в Jquery - PullRequest
13 голосов
/ 16 декабря 2010

У меня есть страница, где пользователь может перетаскивать объекты и сохранять их как изображение. Когда пользователь уходит со страницы, происходит событие перед загрузкой . Теперь это происходит каждый раз. Что я хочу сделать, это отменить привязку события, если пользователь сохранил свою работу, чтобы сообщение больше не появлялось. Для этого я использовал unbind метод в jQuery . Но, похоже, это не работает. Ниже приведен код для привязки и отмены привязки событий.

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);

После вызова метода сохранения,

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

Что я здесь не так делаю?
Кроме того, метод save на самом деле является вызовом Ajax.

1 Ответ

31 голосов
/ 16 декабря 2010

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;
...