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