在 IE 下,CloseHandler 和 Window.ClosingHandler() 似乎无法正常工作或未以与 Firefox 不同的方式触发事件。
Window.addWindowClosingHandler(new Window.ClosingHandler() {
@Override
public void onWindowClosing(ClosingEvent event) {
event.setMessage(message);
}
Window.addCloseHandler(new CloseHandler<Window>() {
@Override
public void onClose(CloseEvent<Window> event) {
//Window.alert("debug1");
if(recordId!=null){
DatabaseQueryServiceAsync dbQueryService = DatabaseQueryService.Util.getInstance();
dbQueryService.releaseRecordLock(recordId, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable arg0) {
}
@Override
public void onSuccess(String arg0) {
}
});
}
}
});
});
例如,当我在小部件内交换面板时,IE 下的 ClosingHandler 会显示消息。这不会发生在 Firefox 中。
CloseHandler 在 IE 中窗口关闭时似乎根本不会触发,但在 firefox 中会触发。有趣的是,当我在 addCloseHandler() 方法中放置 Window.alert("debug1") 消息时,它会运行下面的回调,但是一旦我删除它,回调就不会发生.在 firefox 中,它可以在两种情况下运行并运行回调。所以,我基本上是在拉扯我的头发,并不真正了解发生了什么。任何帮助将不胜感激。谢谢。
最佳答案
就我个人而言,我没有发现 addCloseHandler
有多大用处,但是 addClosingHandler
对确认导航非常有用。
当您说“在您的小部件中交换面板”时,我不确定我是否理解您的意思。您要更改历史 token 吗? (即 History.newItem("page");
或 History
小部件)或者您可能手动将小部件添加到 DOM?然而,在这两种情况下,IE 和 Firefox 都不应该触发 ClosingEvent
。
我对 ClosingEvent
的体验是,它在浏览器之间非常统一,因此也许值得更详细地描述您观察到的确切差异。
关于java - CloseHandler<Window> 和 Window.ClosingHandler() 在 IE 中的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2587197/