Gwt 如何捕获用户离开页面并取消页面
当用户离开GWT应用程序时,我会打开一个确认对话框,为他们提供留下的选择,即确认(“您确定要离开此页面”、“是”、“否”) 我知道如何建立拨号箱。:) 问题是,如何捕捉用户离开页面的事件以及如何取消它Gwt 如何捕获用户离开页面并取消页面,gwt,Gwt,当用户离开GWT应用程序时,我会打开一个确认对话框,为他们提供留下的选择,即确认(“您确定要离开此页面”、“是”、“否”) 我知道如何建立拨号箱。:) 问题是,如何捕捉用户离开页面的事件以及如何取消它 Daniel您必须创建CloseHandler并在窗口中注册它: Window.addWindowClosingHandler(handler) 编辑:固定方法名称。查看aem注释和答案。调用,并向其传递一个调用Window.ClosingEvent的回调,如下所示: Window.addWind
Daniel您必须创建CloseHandler并在窗口中注册它:
Window.addWindowClosingHandler(handler)
编辑:固定方法名称。查看aem注释和答案。调用,并向其传递一个调用Window.ClosingEvent的回调,如下所示:
Window.addWindowClosingHandler(new Window.ClosingHandler() {
public void onWindowClosing(Window.ClosingEvent closingEvent) {
closingEvent.setMessage("Do you really want to leave the page?");
}
});
(我已经添加了GWT2.0文档的链接;将这些URL中的2.0更改为1.6以查看GWT1.6/1.7文档。)
请注意,这样做,您不必自己创建对话框。在
onModuleLoad()中调用下面的方法
离开页面导航或退出浏览器?我认为这种方法不存在?您的意思是addWindowCloseListener吗?自从GWT1.6以来,addWindowCloseListener已被弃用。您应该使用Window.addCloseHandler(handler)或Window.addCloseHandler(handler)。Isac,而不是对您的答案进行注释,您可以编辑它以提及当前函数。这不会满足问题的要求,因为addCloseHandler会向您传递CloseEvent,当关闭窗口为时已晚时会发生这种情况。addWindowClosingHandler允许您执行问题所要求的操作。看到了吗?如果我只想知道wepabb的最后一个窗口何时关闭呢?假设用户打开了一堆选项卡,我想知道他什么时候关闭最后一个选项卡,我如何才能做到这一点。
private void setupHistory() {
final String initToken = History.getToken();
if (initToken.length() == 0) {
History.newItem("main");
}
// Add history listener
HandlerRegistration historyHandlerRegistration = History.addValueChangeHandler(new ValueChangeHandler() {
@Override
public void onValueChange(ValueChangeEvent event) {
String token = event.getValue();
if (initToken.equals(token)) {
History.newItem(initToken);
}
}
});
// Now that we've setup our listener, fire the initial history state.
History.fireCurrentHistoryState();
Window.addWindowClosingHandler(new ClosingHandler() {
boolean reloading = false;
@Override
public void onWindowClosing(ClosingEvent event) {
if (!reloading) {
String userAgent = Window.Navigator.getUserAgent();
if (userAgent.contains("MSIE")) {
if (!Window.confirm("Do you really want to exit?")) {
reloading = true;
Window.Location.reload(); // For IE
}
}
else {
event.setMessage("My App"); // For other browser
}
}
}
});
}