GWT,删除历史记录令牌

时间:2013-05-31 13:25:32

标签: gwt token browser-history

我有一个GWT项目,使用活动和地点。我的问题是历史记号。

我的令牌模式:

#/{key 1}/{value 1}/{key 2}/{value 2}  

值1必须为数字

值2必须为数字

有效令牌是:

#/view/1/date/123123123123

我决定验证令牌,然后出现问题。

例如,如果用户手动更改令牌:

#/view/qqweqweqwedate/date/123123123123

在这种情况下,值1不是数字。我捕获此异常并使用默认值修复令牌。问题是无效令牌在历史记录中,当我点击浏览器上的“后退”按钮时,它再次出现。

有人可以告诉我如何从历史记录中删除无效令牌,或者不允许将其写入历史记录中吗?

1 个答案:

答案 0 :(得分:5)

设置新哈希值(GWT中的新令牌)后,它将存储在浏览器历史记录堆栈中。

您无法从浏览器历史记录中删除令牌,因此您可以做的最多事情就是使用代码处理此事件。我的意思是,当用户点击回来时,将访问格式错误的令牌,并且可以通知您执行任何操作:再次修复令牌并将用户带到正确的令牌,或者调用History.back()以便用户被发送到上一个令牌。

我看到的问题是,是否知道用户何时来自已修复的令牌屏幕以将其发回。

理论上,您可以使用javascript使用event.oldURL和event.newURL,但这些属性不会在GWT中公开,因此您应该使用jsni手动实现它们。