我如何确定我是否要“前进”?或“向后”。通过我在 GWT 中的历史?
我正在查看历史记录和历史 JavaDocs< /a> 在 GWT 中,我注意到无法判断是否按下了前进或后退按钮(无论是实际按下还是用户按下)。 “按下按钮”由您注册的 addValueChangeHandler 处理,但传递给处理程序的唯一内容是历史堆栈中的字符串。没有指示“历史记录”是“后退”(使用后退箭头按钮)还是“前进”(使用右箭头按钮)。有什么方法可以确定这一点吗?
I am looking at History and History JavaDocs in GWT and I notice that there is no way to tell whether the forward or backward button was pressed (either pragmatically or by the user). The "button press" is handled by your registered addValueChangeHandler, but the only thing passed to the handler is a string on your history stack. There is no indication as to whether the "History" is moving "back" (using the back arrow button) or "forward" (using the right arrow button). Is there any way to determine this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
抱歉,你不能。即使可以,有些浏览器(例如 Firefox)可以让用户“跳回”多个页面。因此,如果您尝试依赖相对“坐标”而不是绝对“坐标”,导航可能会破坏您的应用程序。
您始终可以在历史标记上附加某种计数器。如果您只有一个历史监听器,这并不难。
Sorry, you can't. And even if you could, there are browsers, like Firefox, that let the user "jump" back more than one page. So if you try to relying on relative "coordinates" instead of absolute, the navigation could break your app.
You can always append some kind of counter on your history token. It would not be hard, if you have only one history listener.
您可以做的就是拥有一个像这样的 UrlManager:
将每个历史标记保存到列表中。
如果它是一个全新的历史标记,则将其添加到列表中。
如果是前一个历史标记,则后退按钮已被按下。
我建议使用列表来保存标记并保存一个可以在列表中上下移动的迭代器。所以最初它指向列表的末尾。如果新令牌是列表中的前一项,则已按下后退按钮。
如果您位于列表的中间(返回几次)并且出现了一个新条目(按下了新链接),请删除列表的其余部分(不能再前进到那里)并添加新的条目 - 和将迭代器移动到该项目。
你明白了。
What you can do is have one UrlManager like this:
Save every history token to a list.
If it is a completely new history token then add it to the list.
If it is the previous history token, then the back button has been pressed.
I suggest using a list to save the tokens and save an iterator that can move up and down the list. So initially it points at the end of the list. If the new token is the previous item on the list, then the back button has been pressed.
If you're in the middle of the list (back a few times) and a new entry comes in (new link pressed), remove the rest of the list (can't go forward there anymore) and add the new one- and move iterator to that item.
You get the idea.