我有一个使用“事件”和“地点”的 GWT 项目。我的问题是历史 token 。
我的 token 的模式:
#/{key 1}/{value 1}/{key 2}/{value 2}
值 1 必须是数字
值 2 必须是数字
有效 token 是:
#/view/1/date/123123123123
我决定验证 token ,然后问题出现了。
例如,如果用户手动更改 token :
#/view/qqweqweqwedate/date/123123123123
在本例中,值 1 不是数字。我捕获此异常并使用默认值修复 token 。问题是无效的 token 在历史记录中,当我单击浏览器上的“后退”按钮时,它会再次出现。
有人可以告诉我如何从历史记录中删除无效 token 或不允许将其写入历史记录吗?
最佳答案
一旦您设置了新的哈希值(GWT 中的新标记),它就会存储在浏览器历史记录堆栈中。
您无法从浏览器历史记录中删除 token ,因此您最多能做的就是使用代码处理此事件。我的意思是,当用户单击返回时,将访问格式错误的 token ,并且可以通知您执行您想要的任何操作:再次修复 token 并将用户带到正确的 token ,或者调用 History.back() 以便用户被发送到前一个 token 。
我看到的问题是是否知道用户何时从已经固定的 token 屏幕将其发送回来。
理论上,您可以使用 javascript 使用 event.oldURL 和 event.newURL,但这些属性未在 GWT 中公开,因此您应该使用 jsni 手动实现它们。
关于GWT,删除历史标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858403/