首页 > 解决方案 > Javascript - 捕获离开站点用户的离开并取消操作

问题描述

离开站点警报框

当用户在单击“离开”按钮时离开站点时,我必须设置标志(isOpen = 0 )。有没有直接的方法来捕捉离开按钮的点击事件?

编辑: 我们正在开发一个流程图应用程序。同一组中的多个用户可以访问一个图表,在这种情况下,如果一个用户出于编辑目的打开图表,则系统不应允许为另一个用户进行编辑。所以我们在打开图表时设置了标志 isOpen =1,一旦关闭(来自页面的自定义关闭按钮)我们设置 isOpen=0。除了用户关闭浏览器窗口外,这些场景都可以正常工作。

浏览器关闭场景: 请参考上图。如果用户关闭选项卡,则浏览器将要求确认操作。在这种情况下,用户 1) 用户应离开 2) 用户应取消并保留我无法为 window.onbeforeunload() 事件设置 isOpen=0 的页面,因为如果用户应取消并保持在同一页面。所以我们需要捕捉离开/取消用户操作来设置标志。

如果无法捕捉离开/取消用户操作,请向我建议一个替代解决方案。

标签: javascriptjquerybrowser

解决方案


使用此逻辑无法实现您想要实现的目标,原因是当关闭浏览器选项卡时,所有 JS 执行都会停止(因为选项卡已关闭,这很合乎逻辑)。

另一种方法是用不同的方式解决问题。每隔几秒(或几分钟,取决于您的用例),您可以发送一个fetch/ajax请求作为“我已连接”标志。当用户停止发送此类标志时,这意味着他们关闭了该选项卡或它变为非活动状态。如果用户重新打开它,您将再次开始接收该用户的标志。

这可以使用 WebSockets 更优雅地解决,它完全符合我上面概述的开箱即用的功能。您只需要通过他们的“标志”来跟踪您的用户,无论是 ID、cookie 等。


推荐阅读