如何在浏览器关闭时触发事件[重复]

Posted

技术标签:

【中文标题】如何在浏览器关闭时触发事件[重复]【英文标题】:How to fire an event on browser closing [duplicate] 【发布时间】:2011-06-20 14:24:16 【问题描述】:

可能重复:javascript detect browser close tab/close browser

大家好,

我在浏览器关闭时检测到会话结束时遇到问题,我该如何得到这个,我想触发一个查询以将登录时间信息存储在数据库中,请帮助我。 谢谢大家

【问题讨论】:

【参考方案1】:

依赖它是非常不可靠的,关闭浏览器时可能无法完成ajax查询。

解决方案:

每隔x 秒发送一次心跳请求,以判断用户是否离开。

【讨论】:

互联网上我们最不需要的就是网站滥用 AJAX 来获取“心跳”请求。 @meagar 我同意,我不知道为什么提问者想要在浏览器关闭而不是传统方式上注册用户。我以为他正在构建一个实时分析服务..【参考方案2】:

您可以创建一个隐藏按钮,然后使用触发按钮单击事件

function doUnload()

 if (window.event.clientX < 0 && window.event.clientY < 0)
 
   document.getElementByID('HiddenButton').click() 

<body onunload="doUnload()">

从未尝试过,但它可能会工作:)

或者你可以使用 global.aspx 方法

    protected void Session_End(object sender, EventArgs e)
    

做某事;

    protected void Application_End(object sender, EventArgs e)
    

做某事;

Sp

【讨论】:

-1 Application_End 与客户端活动没有直接关系,并且 Session_End 不可靠,因为它在会话处于非活动状态一段时间后被触发 我想这取决于他们要求它有多准确。只是想把它扔出去。 :)

以上是关于如何在浏览器关闭时触发事件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在页面关闭或刷新时触发javascript事件

如何检测浏览器窗口/选项卡关闭事件?

Web浏览器常用事件

如何在 Angular 中处理浏览器选项卡关闭事件?只关闭不刷新

如何在一个页面中触发一个事件后就刷新这个页面的另一部分呢?

监听浏览器关闭事件的解决方案