views:

942

answers:

2

I need to do remind the users something when they are leaving the page, and that can be handled with the window.onUnload event. But I also need to check if the user is navigating away by submitting the form on the page, or by clicking the navigation links. I could use the form's onSubmit event to set a flag, and then check against that flag in the window.onUnload event, but I am not sure which one fires first.

any ideas ?

+2  A: 

You actually want window.onbeforeunload

window.onbeforeunload = function (e) {
  var e = e || window.event;

  // For IE and Firefox
  if (e) {
    e.returnValue = 'Are You Sure?';
  }

  // For Safari
  return 'Are You Sure?';
};
Chad Grant
A: 

It turns out that the form.onSubmit event fires first so i can use a flag. I have checked this in Firefox and Safari only.

Discodancer
onsubmit will not fire if they refresh the page, click back, type a new url. To prevent loss of work, stick to onbeforeunload. By the way, for it to work properly, it must be done as Chad Grant described, not by addEventListener
Juan Mendes