许多客户端代码库和工具包,例如 Yahoo 的 YUI 和 Google 的 GWT 支持管理用户体验的状态历史。实施后,它允许用户在单击后退按钮或退格键时在同一页面上恢复到以前的应用程序状态。
在来自 Google IO 的这段视频中,强烈建议实施这种类型的历史管理,实际上它被认为是富网络应用程序的一部分。
我看到了这种方法的价值,但我不相信它真的支持普通用户的期望。在对 StackOverflow 上的这个问题进行研究时,我发现很多人抱怨覆盖“返回”功能的邪恶,难道不能说这种方法属于这一类吗?
就我个人而言,当“返回”仅仅改变了页面状态,而我真正想要的是退出到我最后的浏览位置时,我曾多次感到沮丧。 对于我的使用,Back 的 99% 用例不是状态更改,而是页面更改。
最后,我真正的问题是:我们如何在不覆盖“返回”的情况下支持富 Web 应用程序的历史管理?
编辑(最佳实践综述):
在阅读 Michael 的博客文章后,我现在在想,对于非链接用户控件(下拉菜单、文本字段等)的撤消,我将依赖 Control-Z 和/或按钮 - 一种被广泛支持的 UI 模式。
Back 最多应该恢复富Web 应用程序提供的最粗粒度的视图更改。它应该通过只记住导航树中的一个分支来模拟浏览器历史记录:重复返回总是指向根目录,然后是访问的最后一页。