我如何通过GWT中的历史来确定我是“前进”还是“后退”?

我正在看GWT中的历史和历史JavaDocs ,我注意到无法判断是按下了前进按钮还是后退按钮(无论是实用还是按用户)。 “按下按钮”由您注册的addValueChangeHandler处理,但传递给处理程序的唯一内容是历史堆栈上的字符串。 没有迹象表明“历史”是“向后”(使用后退箭头按钮)还是“前进”(使用右箭头按钮)。 有没有办法确定这个?

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

您可以随时在历史记录标记上附加某种计数器。 如果你只有一个历史监听器,那就不难了。

你可以做的是有一个像这样的UrlManager:

public class UrlManager implements ValueChangeHandler { public UrlManager() { History.addValueChangeHandler(this); } public void onValueChange(ValueChangeEvent event) { String historyToken = event.getValue(); } } 

将每个历史记录标记保存到列表中。
如果它是一个全新的历史记录标记,则将其添加到列表中。 如果是以前的历史记录标记,则按下后退按钮。

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

你明白了。

Interesting Posts