2013-05-31 146 views
2

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

模式我的令牌:

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

值1必须是数字

值必须是60号

有效的令牌是:

#/view/1/date/123123123123 

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

在示例中,如果用户手动改变令牌:

#/view/qqweqweqwedate/date/123123123123 

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

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

回答

5

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

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

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

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

+0

我认为解决方案是类似的东西。非常感谢你。 –