[英]Detecting browser's closing tab
我目前在我的javascript上使用window.onbeforeunload函数来检测浏览器的关闭选项卡。 我只希望在用户点击结束标签时运行该功能。 但是,当用户从一个页面导航到另一个页面(操作结果到操作结果)时,此功能也会运行。 我正在asp.net mvc 4上编写代码。感谢提前。
window.onbeforeunload = function () {
};
在ASP.net MVC中有一种方法可以做到这一点,但你必须考虑所有场景。
正如你所说onbeforeunload
运行导航。 因此,如果你能找到一种方法来考虑用户没有导航但是他不在那里你可以实现你的目标。
所以我建议使用SignalR
+ onbeforeunload
,因为无论你是否导航或关闭SignalR中的选项卡,用户都将断开连接并且你有一个OnDisconnected
事件。
所以现在您知道用户已离开页面,但您不知道他是否已导航或关闭了选项卡。 在这种情况下,如果触发了onbeforeunload
事件,则使用onbeforeunload
向服务器发送消息。 现在考虑两个解决方案,你就是黄金。
那么会发生什么:在关闭选项卡或窗口时:调用onbeforeunload
并向服务器发送一条消息,说connectionId
= X已经导航,如果在很短的时间之后服务器中的connectionId
传递给OnDisconnected
你确定他关闭了标签。
当然这两个操作发生在不同的线程中,并且它们有点超过顶部,但如果您认真对待在您的网站中获得此认可,这将是我的方法,因为我对解决方案不是100%有信心是一个很好的解决方案但是它可能是为数不多的之一!
当然,如果您不想使用SignalR
, Websocket
也是另一种方式,而不是SignalR
但不能在SignalR
可以使用的旧浏览器中工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.