2

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

我的令牌模式:

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

值 1 必须是数字

值 2 必须是数字

有效令牌是:

#/view/1/date/123123123123

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

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

#/view/qqweqweqwedate/date/123123123123

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

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

4

1 回答 1

5

一旦设置了新的哈希(GWT 中的新令牌),它就会存储在浏览器历史堆栈中。

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

我看到的问题是是否知道用户何时来自已经固定的令牌屏幕将其发送回来。

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

于 2013-06-01T08:25:10.250 回答