W3C home > Mailing lists > Public > public-webapi@w3.org > November 2005

Re: Ajax Back/Forward History problem document state by document.save()

From: Laurent <laurent@xulfr.org>
Date: Tue, 22 Nov 2005 17:38:26 +0100
Message-ID: <43834982.6000202@xulfr.org>
To: public-webapi@w3.org

kenny heaton wrote:
> 
> I guess what I am getting at is maybe we do not need more tools to
> help us develop dynamic application and not break the back button.
> Maybe we just need to be smart about the way we design and develop our
> applications, and a set of best practices perhaps. Maybe if you create
> a web app that "breaks the back button", and your users are still
> trying to click the back button, them maybe you need to re-look at the
> way you created and designed your application? Better web application
> usability.
> 
> I wonder what everyone thinks of that, or do web developers really
> need the ability to save the state of a page into history so the user
> can go back to it?

I think we shouldn't mix up the two case of the use of a browser : the 
navigation throw web pages, and the use of a web application. After all, 
a web application is like any other software : the user do some actions, 
and he wants to undo/redo its action in this web app.

I think that all users actions (so, to summary, all DOM mutation that 
the developer do) should be stored, not in the browser history, but in 
the undo/redo stack of the browser. Then the user only need to choice 
the edit/undo or edit/redo item menu in  his browser (or hit CTRL+Z, 
CTRL+SHIFT+z) to cancel or redo an action, like in any other software. 
(the browser could display an undo/redo button in the toolbar to improve 
the accessiblity of this feature)

To store actions in the undo/redo stack, the developer should call the 
*state function. Or better, window object could have such function :

window.startBatch();
//here, some DOM modification...
window.endBatch();

startBatch() starts a "transaction". All DOM modifications are 
registered in the transaction. endBatch() store the transaction in the 
undo/redo stack. (The core of the HTML editor of Mozilla works like 
this). So the browser can cancel DOM modifications or replay them.


Laurent
Received on Tuesday, 22 November 2005 16:55:03 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:18:52 GMT