关闭Vaadin中的浏览器窗口

Close the browser window in Vaadin

本文关键字:浏览器 窗口 Vaadin 关闭      更新时间:2023-09-26

我在谷歌上搜索了很多,但没能找到这个问题的解决方案。我有一个在浏览器窗口中运行的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. 读取https://vaadin.com/book/vaadin6/-/page/application.close.html如果你到目前为止还没有做到的话
  2. 如果appRef已经是您的应用程序,则不必调用appRef.getMainWindow().getApplication()来获取该应用程序。只做appRef.close();
  3. 不要手动使会话无效。它扰乱了vaadin的生命周期,所以下一行不再执行,至少在vaadin上下文中不会执行。只需执行"application.close()"并让vaadin执行其余操作
  4. 在vaadin 6"window.close()"的作品中,我将其与IE和chrome一起使用。因此,在您删除了会话无效内容之后,您的代码appRef.getMainWindow().executeJavascript("window.close()");将按预期工作