Web applications &引用;“后退”;富web应用中的行为,真正的用户假设?

Web applications &引用;“后退”;富web应用中的行为,真正的用户假设?,web-applications,gwt,user-interface,yui,browser-history,Web Applications,Gwt,User Interface,Yui,Browser History,许多客户端代码库和工具包,例如Yahoo的YUI和Google的GWT,都支持为用户体验管理状态历史。实现后,当用户单击后退按钮或退格键时,它允许用户在同一页面上恢复到以前的应用程序状态 在Google IO中,强烈建议实现这种类型的历史记录管理,事实上,这被认为是富web应用程序的一部分 我看到了这种方法的价值,但我不相信它真的支持普通用户的期望。在研究StackOverflow的这个问题时,我发现很多人都在抱怨覆盖“Back”功能的邪恶,难道这种方法不属于这一类吗 就我个人而言,当“返回”仅

许多客户端代码库和工具包,例如Yahoo的YUI和Google的GWT,都支持为用户体验管理状态历史。实现后,当用户单击后退按钮或退格键时,它允许用户在同一页面上恢复到以前的应用程序状态

在Google IO中,强烈建议实现这种类型的历史记录管理,事实上,这被认为是富web应用程序的一部分

我看到了这种方法的价值,但我不相信它真的支持普通用户的期望。在研究StackOverflow的这个问题时,我发现很多人都在抱怨覆盖“Back”功能的邪恶,难道这种方法不属于这一类吗

就我个人而言,当“返回”仅仅改变了页面状态,而我真正想要的是退出到我的最后一个浏览位置时,我曾多次感到沮丧。对于我的用法,Back的99%用例不是状态更改,而是页面更改

最后,我真正的问题是:我们如何在不覆盖“后退”的情况下支持富web应用的历史记录管理?

编辑(最佳实践综述):

  • 读了迈克尔的博客后, 我现在在想的是,撤销 非链接用户控件(下拉列表,文本 领域等)我会依赖 控件-Z和/或按钮-UI 广泛支持的模式

  • 后退最多应还原富web应用程序提供的最粗粒度视图更改。它应该通过只记住导航树中的一个分支来模拟浏览器历史:重复返回总是指向根,然后是访问的最后一个页面


这取决于要返回的应用程序的状态。例如,在gmail中,当我从邮件发送到收件箱时,后退会将我带回邮件,这是非常明智的。在非ajaxwebmail中,这是自然发生的事情

但是,如果单击“上一步”让我完成了我对收件箱中的邮件所做的所有选择和取消选择操作,那将很快变得烦人。因此,如果页面状态的更改足够大,可以使用历史记录管理,但如果只是页面的一小部分发生了更改,则不应使用历史记录管理。

一个“富web应用程序”必须非常小心用户会认为什么是“新页面”,以及什么是页面上的某些操作。这种对“页面”的感知应该通过浏览历史的行为来反映(“后退”和“前进”按钮只是与浏览历史交互的一种方式)

许多“富web应用程序”最好是简单的HTML页面。在这样的应用程序中,“页面”通常是显而易见的


其他应用程序最好使用真正的客户机-服务器模型:应该可以只下载一次客户机,而不是每次新会话。此类应用程序通常没有明显的“页面”模型,因此每个用户都有自己的想法“后退”按钮应该做什么。在这种情况下,最好不要呈现“类似web浏览器的界面”,以免引起错误的期望。我相信像Java Web Start这样的技术是此类应用程序的良好基础。

在我看来,页面历史和应用程序状态历史是两个完全不同的东西。因此,我们有两种Chaise: 1.我们将应用程序视为一个网站——在本例中,后退(和前进)应该像用纯html编写一样工作。正如gmail所做的,就像rjmunro提到的那样。 2.我们将应用程序视为应用程序(一页)-在这种情况下,后退按钮将在应用程序启动前为您显示页面。那是你的99%,对吗


BWT,退格是最烦人的一个。

退格应该会反转链接所做的导航,而不是别的。用户将链接与导航绑定在一起,因此,只要所有链接看起来都像指向用户的链接,从链接到备份对他们来说是很自然的

具体地说,我看到的唯一好的解决方案是Back将用户带回浏览器中的整个页面。换句话说,在厚客户端应用程序中,将其视为关闭或取消(或只是单击另一个窗口)。这与我的第一段是一致的,因为用户通常希望链接能够浏览整个页面。所以,背也应该

在一个富应用程序中,你不能让每一个小的输入都反向,因为当用户想要做的是查看他们刚刚打开的页面时,这将是非常乏味的。更糟糕的是,这意味着用户必须撤销设置当前页面的所有工作(甚至可能在文本框和组合框中输入内容),以便查看以前看到的页面

您不能让页面内的任意大更改(例如,选项卡选择)恢复,因为该更改是任意的。用户将无法预测何时使用Back。他们会害怕,因为它可能会恢复得比他们想要的多得多

web应用程序所需要的不是对历史的重新定义,而是一个完全独立的撤销功能,带有自己的撤销缓冲区,以便处理页面中的用户输入


我在

上看到了所有血淋淋的细节,我读了你的整个帖子并衷心同意,尽管可能没有那么热心。