【问题标题】:Close the browser window in Vaadin在 Vaadin 中关闭浏览器窗口
【发布时间】:2013-07-24 06:12:53
【问题描述】:

我用谷歌搜索了很多,但找不到解决这个问题的方法。我有一个在浏览器窗口中运行的 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() ?

【问题讨论】:

标签: javascript browser vaadin


【解决方案1】:
  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()"); 将按预期工作。

【讨论】:

    猜你喜欢
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2017-01-16
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多