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