7

I've got an editor in javascript on my webpage and I would like to ask user if he/she wants to leave the page even if there are unsaved changes.

I know I can add custom message to the "onbeforeunload dialog" this way:

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

(Source) but I want to display the dialog only where there really are some unsaved changes. How to do that?

Thanks!

Community
  • 1
  • 1
MartyIX
  • 27,828
  • 29
  • 136
  • 207

1 Answers1

9

You can do something like this:

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

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

You can make sure to change unsavedChanges in the 'change' event handlers.

gnarf
  • 105,192
  • 25
  • 127
  • 161
  • It works! I was returning empty string instead of returning null or undefined as you wrote. Thank you! – MartyIX Apr 18 '10 at 20:11