wicket - 识别检票口中的浏览器关闭
问题描述
是否有可靠的方法来检测检票口应用程序中服务器端浏览器选项卡或窗口的关闭?它必须在 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());
}
}
解决方案
closing the tab
从浏览器的角度来看,和之间没有区别refreshing the tab
。在这两种情况下,浏览器都会触发beforeunload
JavaScript 事件并关闭所有打开的连接(WebSocket、ServerSideEvent、Ajax)。
所以,你可以使用
page.add(new AjaxEventBehavior("beforeunload") {
@Override public void onEvent(AjaxRequestTarget target) {...}
});
但这只是告诉您用户导航离开当前页面。没有信息接下来会发生什么。
推荐阅读
- r - 使用 R 生成所有可能的 DAG
- javascript - 即使 response.ok 为假,Fetch Api .then 函数也会运行
- django - Eurodns + Django + 动态 IP
- c - c中的堆内存
- qt - 编译 Qt 6.2.1:“qplatformdefs.h”:没有这样的文件或目录
- javascript - “http://127.0.0.1:5500”已被 CORS 策略阻止
- amazon-web-services - 有没有办法让 ListObjectsV2 验证 s3 对象类型/扩展?
- django - 引用查询集中的关系
- javascript - 根据屏幕大小调整的 JavaScript/CSS 关键帧动画
- r - for、while 和重复循环来查找列的平均值