Hi,

The reason that using it with the unload doesn't work is that it
doesn't stop execution at the point it's shown the way alert and
confirm do.  As far as I know, only built-in things like alert and
confirm can do that.  Consequently, you show the dialog, but then the
browser continues with what it was doing -- which is to move away from
the page.

Your option 3 of opening another window with all the data and your
"save?" question is unlikely to be successful; opening a window from
the onload event is a classic means of trying to trap the user into
looking at multiple adverts and you're likely to run afoul of ad-
blockers.  And that's just as well, it's not a great user experience.

Your option 4 is not possible.  For links within your page that take
the user elsewhere, you could do it.  But if the user is just typing
in a new URL in the address bar, selecting a favorite, hitting their
"home" button, etc., your page is not -- and never will be -- told
what page they're going to.

This is a common problem and I wouldn't be surprised if someday
browsers start providing better mechanisms around this.  Frankly,
though, with the current standards I doubt you're going to find a
solution to this that provides a better user experience than the built-
in confirm windoww, which does after all allow you to provide a
message to show and does provide reasonable options if you phrase your
question right.  So I'd recommend:

1. Live with the confirm window.

or

2. Redesign your app such that users' changes are automatically saved
to a "draft" area as they're made, so that when they come back, you
can let them pick up where they left off (keeping the changes,
continuing with making changes, or discarding them) -- something akin
to GMail's (and others') handling of draft email messages.  And as
with GMail's draft messages, there will always be a brief period
between a change being made and your saving a draft of it, so you'll
probably need to use a confirm in that interval (as GMail does).

HTH,
--
T.J. Crowder
tj / crowder software / com
Independent Software Engineer, consulting services available


On Mar 7, 3:45 pm, "radhaspen...@gmail.com" <radhaspen...@gmail.com>
wrote:
> I have requirements to code something that I need some help with.  I
> am encountering the following issue:  I need to display a window right
> before someone leaves the page they are on.  Basically prompt them to
> save their changes or continue on to the next page.  On the save I
> execute an AJAX request to Save and then they go on to the next page.
> Well I can do this easily using the regular javascript confirm object:
> <body onunload="var x=confirm("save changes");if(x) ajxcalltosave();">
>
> However I need to do this using the prototype window.  As I need to
> override the button choices to be "yes, save" or "no, don't". (which
> to my knowledge you cannot do with confirm)
> During the unload event-- When I instantiate a Dialog.confirm window
> via prototype's libraries the window shows up for a split second and
> the user gets redirected to the next page.  I want to make the
> prototype window stay before moving on to the next page.  That is the
> issue.  I have used it before and can display the window and it
> behaves properly on every other event other than unload, and I don't
> understand why. I'm sure if I step through the code enough times I
> should hopefully find some clue as to its behavior. But haven't found
> any so far.
>
> I could open another window referring to a different page with the
> question and buttons, in which case the parent page would already move
> on and I'd have to pass all the information to execute the save as
> parameters to the request displayed in the new window.  That would be
> kind of cloojy.
>
> If there is some way I could abort the unload or redirect back to the
> same page then show the Dialog.confirm window that would work but I
> would need to know where the user initially intended on leaving to so
> that I could redirect them there after the save.
>
> RECAP
> Option 1:  Override confirm's button choices.   CON:  Not possible as
> per my knowledge
> Option 2: Make the prototype window not disappear before moving on to
> the next page.  CON: I don't know how
> Option 3: Open another window CON: Not pretty, the parent page moves
> on before the save occurs, would not appease requirements
> Option 4: Abort the unload, stay on the same page  CON: Need to know
> where the user meant to go so they could be redirected back there
> later
>
> Thank you for reading this.  If you can provide some insight to my
> issue, I'd really appreciate it.  (I really would like to be able to
> execute option 2.)
>
> :-)
> radha
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to