当我打开应用程序关闭浏览器窗口时,我也希望结束http会话。 我已经尝试了Execute code on window close in GWT但是我在onClose方法中放置的任何东西都没有运行。
Window.addCloseHandler(new CloseHandler<Window>()
{
@Override
public void onClose(CloseEvent<Window> event)
{
//Code in here never executes!
alert("Hi");
Window.Location.replace(GWT.getHostPageBaseURL() + "logout.jsp");
}
});
答案 0 :(得分:0)
实际上有两种方法可以使用:
ClosingEvent
的注册,由JavaScript的$wnd.onbeforeunload
触发。CloseEvent
的注册,由JavaScript的$wnd.onunload
触发。请参阅WindowImpl.initWindowCloseHandler()
,以及WindowImplIE
ClosingEvent比CloseEvent早一点。
(第三种方法Window.addWindowCloseListener
可以有效地注册$wnd.onbeforeunload
和$wnd.onunload
,但不推荐使用该方法。)
ClosingHandler.onWindowClosing()
的javadoc可能解释了您没有看到警报的原因:
* Fired just before the browser window closes or navigates to a different
* site. No user-interface may be displayed during shutdown.
而不是Window.location.replace()
而是应该为注销进行ajax调用(例如使用GWT-RPC或RequestBuilder)。用户关闭窗口,因此无法再替换其位置。