我如何确定在GWT中浏览历史记录时是“前进”还是“后退”?

4

我正在查看GWT中的历史记录历史记录JavaDocs,我注意到没有办法告诉前进或后退按钮是由用户还是程序操作。 "按钮点击" 由您注册的addValueChangeHandler处理,但是传递给处理程序的唯一内容是历史记录堆栈中的字符串。没有任何指示表明 "历史记录" 正在 "向后"(使用后退箭头按钮)移动还是 "向前"(使用右箭头按钮)移动。有没有办法确定这一点?


出于好奇,您能提供一个有用的理由/用例,说明这样的知识会有什么用处吗? - Igor Klimer
我希望页面在您推入历史堆栈或按右箭头按钮时“向左滑动”,并在弹出历史堆栈时“向右滑动”。就像iPhone用户界面一样。 - Stephen Cagle
2个回答

4
抱歉,您不能这样做。即使您可以,也有一些浏览器(如Firefox)允许用户“跳转”回到多个页面。因此,如果您尝试依靠相对“坐标”而不是绝对坐标进行导航,可能会破坏您的应用程序。
您始终可以在历史令牌上附加某种计数器。如果您只有一个历史监听器,那么这并不难。

0

你可以这样拥有一个 UrlManager:

   public class UrlManager implements ValueChangeHandler<String> {

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

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

  }
   }

将每个历史令牌保存到列表中。
如果是全新的历史令牌,则将其添加到列表中。 如果是上一个历史令牌,则表示已按下返回按钮。

建议使用列表保存令牌,并保存一个可以在列表中向上和向下移动的迭代器。因此,最初它指向列表末尾。如果新令牌是列表上一个项目,则表示已按下返回按钮。 如果您在列表中间(返回几次)并且有新条目进来(按下新链接),请删除列表的其余部分(无法再向前移动),并添加新条目-并将迭代器移动到该项。

你明白了。


如果这是先前的历史令牌,那么可能会按下前进按钮... - Julia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接