用户取消了来自Activity#mayStop()的消息后,如何显示上一个URL?

时间:2010-11-11 19:57:22

标签: gwt gwt-places gwt-activities

在我们的应用程序中,我们需要检查数据是否在我们位于特定位置时保存,然后再导航。因此用户应该能够否定浏览器后退按钮请求。但是在收到历史值更改事件时,网址已经更改。历史类似乎没有办法恢复网址。有人有什么想法吗?

5 个答案:

答案 0 :(得分:1)

在GWT 2.1中,您可以获得活动和地点。活动有一个maystop方法,如果我理解正确的话,这正是你想要的。

答案 1 :(得分:0)

使用window.onunloadwindow.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)

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

  

mayStop是一个错误,或者只应在卸载应用时调用,而不是在应用内进行内部导航。

所以最好不要一直使用它......