关闭Vaadin中的浏览器窗口

时间:2013-07-24 16:21:33

标签: javascript browser vaadin

我已经谷歌了很多但是无法找到解决这个问题的方法。我有一个在浏览器窗口中运行的Vaadin应用程序。我有一个注销按钮,单击它必须使会话无效并关闭浏览器窗口。我能够获得此代码以使会话无效并关闭应用程序。但是,我也希望关闭浏览器窗口,这是我没有取得任何成功的地方

WebApplicationContext webCtx = (WebApplicationContext) appRef.getMainWindow().getApplication().getContext();
                HttpSession session = webCtx.getHttpSession();
                session.invalidate();
                appRef.getMainWindow().getApplication().close();

我正在使用vaadin 6.x并尝试以下操作,但它们不适用于我尝试过的Chrome浏览器和IE浏览器。

            appRef.getMainWindow().executeJavaScript("window.close();");

任何想法都将不胜感激。我的另一个问题是我需要获取主窗口的名称,然后调用mainWindow.close();或者只是window.close()?

1 个答案:

答案 0 :(得分:3)

  1. 如果你还没有这么做,请阅读https://vaadin.com/book/vaadin6/-/page/application.close.html
  2. 如果appRef已经是您的应用程序,则无需致电appRef.getMainWindow().getApplication()即可获取该应用程序。只需appRef.close();
  3. 即可
  4. 不要手动使会话无效。它与vaadin生命周期混淆,因此下一行不再执行,至少不在vaadin上下文中。只需执行“application.close()”并让vaadin完成剩下的工作。
  5. 在vaadin 6中,“window.close()”有效,我用它和IE和Chrome一起使用。因此,在删除会话失效后,您的代码appRef.getMainWindow().executeJavascript("window.close()");将按预期工作。