0

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

4

5 回答 5

1

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

于 2010-11-12T14:40:02.407 回答
0

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

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

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

3) 当你收到一个新的 onHistoryChanged 事件时,如果你的 #2 中的数据结构表明导航不安全,请避免更改页面并恢复你在 #1 中保存的 historyToken。我假设您可以通过以下方式执行此操作:

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

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

同样,我还没有真正实现这一点,所以让我知道它是如何工作的。

如果您有允许用户离开应用程序的链接并且您也想阻止这种情况,您还需要添加一个 onbeforeunload。

于 2010-11-12T03:25:34.107 回答
0

本期报告中,t.broyer 在他的评论中解释说,这种行为是在 Places 框架的设计过程中计划好的。最重要的部分是:

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

所以可能最好不要使用它......

于 2012-08-02T12:54:49.973 回答
0

使用window.onunloadwindow.onbeforeunloadjavascript 回调来确认/保存状态。 onbeforeunload 示例

于 2010-11-11T19:59:36.080 回答
0

查看gwt-platform框架中的PlaceManagerImpl类。尤其是处理领域的方法和方法。onValueChange()onLeaveQuestion

希望有帮助。

于 2010-11-12T08:21:24.963 回答