Gwt 如何在用户取消与来自活动#mayStop()的消息的对话后显示上一个url?

Gwt 如何在用户取消与来自活动#mayStop()的消息的对话后显示上一个url?,gwt,gwt-places,gwt-activities,Gwt,Gwt Places,Gwt Activities,在我们的应用程序中,我们需要在离开某个特定位置之前检查数据是否已保存。因此,用户应该能够拒绝浏览器后退按钮请求。但在收到历史值更改事件时,url已经更改。History类似乎没有办法恢复url。有人有什么想法吗 使用window.onunload或window.onbeforeunloadjavascript回调来确认/保存状态。 我还没有真正实现这个行为,但这是我的计划,也许它会对你有用 1) 每次收到onHistoryChanged事件并决定允许它时,请将当前historyToken保存在某

在我们的应用程序中,我们需要在离开某个特定位置之前检查数据是否已保存。因此,用户应该能够拒绝浏览器后退按钮请求。但在收到历史值更改事件时,url已经更改。History类似乎没有办法恢复url。有人有什么想法吗

使用
window.onunload
window.onbeforeunload
javascript回调来确认/保存状态。

我还没有真正实现这个行为,但这是我的计划,也许它会对你有用

1) 每次收到onHistoryChanged事件并决定允许它时,请将当前historyToken保存在某个实例变量中

2) 跟踪页面上应阻止导航的活动。使用可以跟踪多个活动的数据结构,如多个文件上载、多个编辑等

3) 收到新的onHistoryChanged事件时,如果来自#2的数据结构表明导航不安全,请避免更改页面并还原保存在#1中的historyToken。我假设您可以通过以下方式实现:

a) 调用History.newItem(oldHistoryToken,false)或

b) 调用History.newItem(oldHistoryToken,true)并保留一个标志以强制忽略下一个onHistoryChanged

再说一次,我还没有真正实现它,所以让我知道它是如何工作的

如果你有允许用户离开应用程序的链接,并且你想阻止它,你还需要添加一个onbeforeunload。

从框架中查看该类。特别是
onValueChange()
方法和处理
onLeaveQuestion
字段的方法


希望能有所帮助。

在GWT2.1中,您可以获得活动和场所。“活动”有一个方法,如果我理解正确的话,它正是您想要的。

在问题报告中,t.broyer在他的文章中解释说,这种行为是在Places框架的设计过程中策划的。最重要的部分是:

mayStop是一个错误,或者它应该只在卸载应用程序时调用,而不是在应用程序内部导航时调用


所以最好不要使用它…

不幸的是,我们实际上并没有更改页面,只是显示同一页面的不同部分。我已经实现了类似的功能。我原本以为我会在历史堆栈上得到重复的标记,但显然历史代码足够聪明,不会这样做。我实际上做的是在我做history.newItem时跟踪当前URL(实际上只是历史标记)。我有一个包装器类可以做到这一点。当用户取消导航事件时,我只添加call History.newItem(带有假parm)和最后保存的令牌。所以问题解决了,谢谢大家。基本上我就是这样结束的。感谢您提供源代码浏览器的链接,我总是忘记它是可用的。