GWT,删除历史记录令牌

Dev*_*nny 2 gwt token browser-history

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

我的令牌模式:

#/{key 1}/{value 1}/{key 2}/{value 2}  
Run Code Online (Sandbox Code Playgroud)

值1必须是数字

值2必须是数字

有效令牌是:

#/view/1/date/123123123123
Run Code Online (Sandbox Code Playgroud)

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

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

#/view/qqweqweqwedate/date/123123123123
Run Code Online (Sandbox Code Playgroud)

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

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

Man*_*ino 5

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

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

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

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