views:

68

answers:

3

Yes, I realize this is horrible UI and bad accessibility wise, but I am forced to seek out the options due to contracted work ( to which I didn't initially agree upon and am stuck with ).

I know that you can assign an event handler to onbeforeunload like:

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

That would bring about a dialog generated by the OS/browser which cannot be customized. It would ask you to Cancel your request or go on.

So far it seems the only way I can display any custom-ness is by inserting a window.open in that event handler:

window.onbeforeunload = function() {
     var x = window.open('modal.html');
}

This would most likely get blocked by any modern browser as a "popup". I have to display an entirely new page with my dialog, but this seems to be the only way to meet the demand.

Is this pretty much the only option I have? Other than forcefully telling the client it isn't recommended to do this?

The only other option would be relying on the user to hit "Cancel request" and then insert the dialog.

Questions I have already looked at:

A: 

As per the questions you already looked at, you cannot customize that dialog beyond passing in a string message to be displayed by the browser.

window.onbeforeunload - MDC

Matt Ball
I'm asking if there are any techniques similar to invoking `window.open` `onbeforeunload` in some way shape or form.
meder
A: 

you could use a hidden Flash .swf that you reveal at onbeforeunload time instead of window.open

Scott Evernden
how would it stay open though? it's just an embed/object element?
meder
A: 

I just went the window.open route onbeforeunload.

meder