Как отобразить диалог onbeforeunload при необходимости?

У меня есть редактор в javascript на моей веб-странице, и я хотел бы спросить пользователя, хочет ли он/она покинуть страницу, даже если есть несохраненные изменения.

Я знаю, что могу добавить пользовательское сообщение в диалог "onbeforeunload" таким образом:

window.onbeforeunload = function() {
  return 'You have unsaved changes!';
}

(источник), но я хочу, чтобы отобразить диалоговое окно только там, где действительно есть несохраненные изменения. Как это сделать?

спасибо!

1 ответов


Вы можете сделать что-то вроде этого:

var unsavedChanges = false;
window.onbeforeunload = function() {
  if (unsavedChanges) return 'You have unsaved changes!';
}

function makeSomeChange() {
  // do some changes....
  unsavedChanges = true;
}

Вы можете убедиться, изменить unsavedChanges в обработчиках событий 'change'.