Java 我如何确定我是否要去;“前进”;或;“向后”;通过我在GWT的历史?

Java 我如何确定我是否要去;“前进”;或;“向后”;通过我在GWT的历史?,java,gwt,browser-history,gwt-history,Java,Gwt,Browser History,Gwt History,我正在查看GWT中的和,我注意到无法判断前进或后退按钮是否被按下(无论是实用的还是由用户按下的)。“按钮按下”由注册的addValueChangeHandler处理,但传递给该处理程序的唯一内容是历史堆栈上的字符串。没有关于“历史记录”是“后退”(使用后退箭头按钮)还是“前进”(使用右箭头按钮)的指示。有什么办法可以确定吗?对不起,你不能。即使可以,也有一些浏览器,比如Firefox,可以让用户“跳回”多个页面。因此,如果你试图依赖相对“坐标”而不是绝对坐标,导航可能会破坏你的应用程序 您始终可

我正在查看GWT中的和,我注意到无法判断前进或后退按钮是否被按下(无论是实用的还是由用户按下的)。“按钮按下”由注册的addValueChangeHandler处理,但传递给该处理程序的唯一内容是历史堆栈上的字符串。没有关于“历史记录”是“后退”(使用后退箭头按钮)还是“前进”(使用右箭头按钮)的指示。有什么办法可以确定吗?

对不起,你不能。即使可以,也有一些浏览器,比如Firefox,可以让用户“跳回”多个页面。因此,如果你试图依赖相对“坐标”而不是绝对坐标,导航可能会破坏你的应用程序


您始终可以在历史标记上附加某种计数器。如果您只有一个历史记录侦听器,这并不难。

您所能做的就是有一个UrlManager,如下所示:

   public class UrlManager implements ValueChangeHandler<String> {

   public UrlManager() {
     History.addValueChangeHandler(this);       
    }

  public void onValueChange(ValueChangeEvent<String> event) {     
    String historyToken = event.getValue();

  }
   }
公共类UrlManager实现ValueChangeHandler{
公共管理器(){
addValueChangeHandler(此);
}
ValueChange上的公共无效(ValueChangeEvent事件){
字符串historyToken=event.getValue();
}
}
将每个历史标记保存到列表中。
如果它是一个全新的历史标记,则将其添加到列表中。
如果是上一个历史标记,则按下了后退按钮

我建议使用一个列表来保存令牌,并保存一个可以在列表中上下移动的迭代器。因此,最初它指向列表的末尾。如果新令牌是列表上的上一项,则按下了后退按钮。 如果你在列表中间(返回几次),一个新的条目进来(新链接被按下),删除列表的其余部分(不能再向前走),并添加新的-并将迭代器移到该项。
你明白了。

出于好奇-当这些知识有用时,你能提供一个理由/用例吗?我希望当你按下历史堆栈时,页面转换为“向左滑动”,或者当你弹出历史堆栈时,按下向右箭头按钮和“向右滑动”。就像iPhone的用户界面一样。啊,现在我明白了,谢谢:)如果它是以前的历史标记,前进按钮也可能被按下。。。。