- From: Ian Hickson <ian@hixie.ch>
- Date: Fri, 12 Dec 2008 08:55:08 +0000 (UTC)
On Sun, 16 Nov 2008, ddailey wrote: > > Here's the sitch: because of an extensive use of CTRL sequences in the > interface, the user will sometimes accidentally do something like CTRL R > (which the browser thinks is a refresh command). In a regular app, if > users stand in jeopardy of losing all their work, the app usually warns > them before quitting. The way I found to work around it (that used to > work) was to use onunload="confirm('save before quitting?'). Currently, > however, IE seems to have removed my ability to intervene before it > erases all work. onbeforeunload=function (){ fix(everything)} doesn't > seem to help either. > > So the question: how does HTML 5 currently address the issue and do > browsers actually implement something along this line these days? I just went ahead and specced out the 'onbeforeunload' feature that most browsers support today that handles this case. Basically you just need to do onbeforeunload="if (dirty) return 'You have unsaved work. Are you sure you want to close this page?'" ...or some such. On Mon, 17 Nov 2008, Thomas Broyer wrote: > > I'm not sure you can automatically save but what you can do is cancel > the unload with a prompt. > > window.onbeforeunload = function() { > return "Your unsaved changes will be lost. Are you sure you want to leave?"; > }; > > The browser will prompt the user with the returned string. Clicking "no" > or "cancel" (depends on the browser) will cancel the "unload". If you > don't want the prompt, just return "undefined" (beware, returning null > in IE6 is equivalent to returning the string "null"). > > window.onbeforeunload = function() { > if (unsavedChanges) { > return "You have unsaved changes."; > } > // return nothing, i.e. return undefined > }; Right. > HTML5 is almost silent about beforeunload and unload (and many other) > events re. their properties (cancelable in this case). unload is defined > in DOM3-Events (as non-cancelable) but AFAICT beforeunload is not spec'd > anywhere. Fixed. On Mon, 17 Nov 2008, Philipp Serafin wrote: > > What you can do for an "emergency save" is to fire a *synchronous* XHR during > the unload event. This will freeze the UI but since the user was about to > close the page anyway, this shouldn't matter much. The other alternative is to be always saving state on the server (or in a local database, cookie, or equivalent). -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Friday, 12 December 2008 00:55:08 UTC