Javascript-捕获离开站点用户的离开并取消操作

问题描述 投票:-2回答:1

Leaving the site alert box

我必须在用户单击“离开”按钮时离开站点时设置标志(isOpen = 0)。是否可以直接捕获Leave按钮单击事件?

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

浏览器关闭方案:请参考顶部图片。如果用户关闭选项卡,则浏览器将要求确认操作。在这种情况下,用户1)用户应离开2)用户应取消并停留页面我无法为window.onbeforeunload()事件设置isOpen = 0,因为如果用户取消并保留同一页面。因此,我们需要捕获Leave / Cancel用户操作来设置标志。

如果无法捕获请假/取消用户操作,请向我建议其他解决方案。

javascript jquery browser
1个回答
0
投票

使用此逻辑无法实现您想要的目标,原因是当关闭浏览器选项卡时,所有JS执行都会停止(从逻辑上讲,由于关闭了选项卡,因此退出)。

另一种替代方法是不同地解决问题。每隔几秒钟(或几分钟,取决于您的使用情况),您可以将fetch/ajax请求作为“我已连接”标志发送。当用户停止发送此类标志时,表示他们关闭了标签页或该标签页变为无效状态。如果用户重新打开它,您将再次开始接收该用户的标志。

这可以使用WebSockets更好地解决,它完全符合我上面开箱即用的要求。您只需要通过用户的“标志”来跟踪他们,例如ID,Cookie等。

© www.soinside.com 2019 - 2024. All rights reserved.