views:

151

answers:

1

We are using window.location.href to navigate the user to a page. Also, we have configured the window.onbeforeunload event to alert users in case there are any unsaved changes.

window.onbeforeunload = confirmBeforeClose;

function confirmBeforeClose() {
    if (jwd.global.inEditMode)
        return "Your changes will not be saved :) and you will be punished to death";
}

In places where there are unsaved changes, and I try to use window.location.href to navigate the user, I get the alert message.

It works fine if I click OK on the popup. However, if I click CANCEL, the JS throws an unspecified error at window.location.href.

Any help is appreciated.

A: 

I was also experiencing this issue (only in IE7, as noted above in my comment).

The only solution that I could find was wrapping the window.location.href call in a try/catch block.

The below is a complete example that reproduces the problem. If you uncomment out the try/catch then it works as desired in all browsers.

JavaScript (in HTML head):

  window.onbeforeunload = confirmBeforeClose;

  function confirmBeforeClose( )
  {
    return 'You have made changes on this page that will be lost if you navigate away without saving.';
  }

  function leavePage( )
  {
     // try {
          window.location.href = "http://www.example.com";
     // } catch( e ) { }
  }

HTML:

<body>
 <a href="#" onclick="leavePage(); return false;">Leave this page</a> 
</body>
Nick