我正在查看GWT 中的History 和History JavaDocs,我注意到无法判断是否按下了前进或后退按钮(无论是实用的还是用户的)。“按钮按下”由您注册的 addValueChangeHandler 处理,但唯一传递给处理程序的是历史堆栈上的字符串。没有迹象表明“历史”是在“后退”(使用后退箭头按钮)还是“前进”(使用右箭头按钮)。有没有办法确定这一点?
问问题
645 次
2 回答
4
对不起,你不能。即使可以,也有一些浏览器,比如 Firefox,可以让用户“跳”回不止一页。因此,如果您尝试依赖相对“坐标”而不是绝对坐标,导航可能会破坏您的应用程序。
你总是可以在你的历史令牌上附加某种计数器。如果您只有一个历史监听器,这并不难。
于 2010-04-23T00:35:43.450 回答
0
你可以做的是有一个这样的 UrlManager:
public class UrlManager implements ValueChangeHandler<String> {
public UrlManager() {
History.addValueChangeHandler(this);
}
public void onValueChange(ValueChangeEvent<String> event) {
String historyToken = event.getValue();
}
}
将每个历史令牌保存到列表中。
如果它是一个全新的历史令牌,则将其添加到列表中。如果它是前一个历史令牌,则后退按钮已被按下。
我建议使用列表来保存标记并保存可以在列表中上下移动的迭代器。所以最初它指向列表的末尾。如果新令牌是列表中的前一项,则返回按钮已被按下。如果您在列表中间(后退几次)并且有一个新条目进入(按下了新链接),请删除列表的其余部分(不能再继续前进)并添加新条目 - 和将迭代器移动到该项目。
你明白了。
于 2013-07-25T09:20:04.493 回答