javascript - Javascript - 捕获离开站点用户的离开并取消操作
问题描述
当用户在单击“离开”按钮时离开站点时,我必须设置标志(isOpen = 0 )。有没有直接的方法来捕捉离开按钮的点击事件?
编辑: 我们正在开发一个流程图应用程序。同一组中的多个用户可以访问一个图表,在这种情况下,如果一个用户出于编辑目的打开图表,则系统不应允许为另一个用户进行编辑。所以我们在打开图表时设置了标志 isOpen =1,一旦关闭(来自页面的自定义关闭按钮)我们设置 isOpen=0。除了用户关闭浏览器窗口外,这些场景都可以正常工作。
浏览器关闭场景: 请参考上图。如果用户关闭选项卡,则浏览器将要求确认操作。在这种情况下,用户 1) 用户应离开 2) 用户应取消并保留我无法为 window.onbeforeunload() 事件设置 isOpen=0 的页面,因为如果用户应取消并保持在同一页面。所以我们需要捕捉离开/取消用户操作来设置标志。
如果无法捕捉离开/取消用户操作,请向我建议一个替代解决方案。
解决方案
使用此逻辑无法实现您想要实现的目标,原因是当关闭浏览器选项卡时,所有 JS 执行都会停止(因为选项卡已关闭,这很合乎逻辑)。
另一种方法是用不同的方式解决问题。每隔几秒(或几分钟,取决于您的用例),您可以发送一个fetch/ajax
请求作为“我已连接”标志。当用户停止发送此类标志时,这意味着他们关闭了该选项卡或它变为非活动状态。如果用户重新打开它,您将再次开始接收该用户的标志。
这可以使用 WebSockets 更优雅地解决,它完全符合我上面概述的开箱即用的功能。您只需要通过他们的“标志”来跟踪您的用户,无论是 ID、cookie 等。
推荐阅读
- spring - spring boot 以接口为 bean 实现
- c++ - 如何创建具有独特形状的自定义、即时、箭头形工具提示?
- javascript - 通过 pactjs 发送时不接受 aww4 凭据
- javascript - Django:给 Stripe ACH 存款验证错误的最佳方法
- python - python html解析器不返回链接
- javascript - Javascript - 将 .onkeypress 输入推送到数组
- javascript - 从javascript更新html中的表
- php - 如何修复在 wordpress 中调用未定义函数 get_woocommerce_currency()?
- css - 如何增加进度条中方形/圆形块的大小?增加宽度,高度不起作用
- c# - NotImplementedException in (NetNative)NetworkInterface.GetNetworkInterfaces() Win IoT Core 14393