在我们的应用程序中,我们需要在离开特定位置之前检查数据是否已保存。所以用户应该能够否定浏览器后退按钮的请求。但是在接收到历史值更改事件时,url 已经更改。History 类似乎没有办法恢复 url。有人有什么想法吗?
5 回答
在 GWT 2.1 中,您可以获得活动和地点。如果我理解正确的话, activity 有一个maystop方法,这正是你想要的。
我还没有真正实现这种行为,但这是我的计划,也许它对你有用。
1) 每次您收到 onHistoryChanged 事件并决定允许它时,将当前的 historyToken 保存在某个实例变量中。
2) 跟踪页面上应该阻止导航的活动。使用可以跟踪多个活动的数据结构,例如多个文件上传、多个编辑等。
3) 当你收到一个新的 onHistoryChanged 事件时,如果你的 #2 中的数据结构表明导航不安全,请避免更改页面并恢复你在 #1 中保存的 historyToken。我假设您可以通过以下方式执行此操作:
a) 调用 History.newItem(oldHistoryToken, false) 或
b) 调用 History.newItem(oldHistoryToken, true) 并保留一个标志以强制忽略下一个 onHistoryChanged。
同样,我还没有真正实现这一点,所以让我知道它是如何工作的。
如果您有允许用户离开应用程序的链接并且您也想阻止这种情况,您还需要添加一个 onbeforeunload。
使用window.onunload
或window.onbeforeunload
javascript 回调来确认/保存状态。
onbeforeunload 示例
查看gwt-platform框架中的PlaceManagerImpl
类。尤其是处理领域的方法和方法。onValueChange()
onLeaveQuestion
希望有帮助。