首页 > 解决方案 > 识别检票口中的浏览器关闭

问题描述

是否有可靠的方法来检测检票口应用程序中服务器端浏览器选项卡或窗口的关闭?它必须在 firefox 68.11.0 或更高版本下工作。我使用检票口 8.8.0。

我尝试使用 websockets 并捕获连接关闭事件。但不幸的是,刷新页面(F5)时也会引发此事件。

new WebSocketBehavior() {
    @Override
    protected void onClose(ClosedMessage message) { // invoked on tab close, window close and unfortunately on page reload
        super.onClose(message);
        log.info("Connection for page = '{}' closed.", message.getKey());
    }
}

标签: wicket

解决方案


closing the tab从浏览器的角度来看,和之间没有区别refreshing the tab。在这两种情况下,浏览器都会触发beforeunloadJavaScript 事件并关闭所有打开的连接(WebSocket、ServerSideEvent、Ajax)。

所以,你可以使用

page.add(new AjaxEventBehavior("beforeunload") {
   @Override public void onEvent(AjaxRequestTarget target) {...}
});

但这只是告诉您用户导航离开当前页面。没有信息接下来会发生什么。


推荐阅读