我想检测用户何时关闭浏览器窗口?

我有示例,我需要在用户关闭浏览器窗口时终止会话。 我试过page_unload()无法正常工作。 示例是:我有父窗口,窗口将从中打开我需要在用户关闭子窗口时删除会话。 拜托,我需要一些帮助。

您可以使用window.onbeforeunload处理程序执行此操作,该处理程序将回发到注销页面。

function CloseSession( ) { location.href = 'SignOut.aspx'; } window.onbeforeunload = CloseSession; 

这是重复的问题..请点击此处

关闭浏览器实际上应该清除会话变量的ASP.net会话ID

https://stackoverflow.com/questions/920042/kill-server-side-session-on-browser-window-close-closed

这不是普通网络http协议中提供的内容。 当浏览器关闭时,没有真正的方法可以确定; 你只能“有点”知道。 你必须把一个丑陋的黑客扔在一起以获得任何程度的确定性,即便如此,它仍然会在大量边缘情况下失败或导致令人讨厌的副作用。

正常的解决方法是每隔一段时间从浏览器向服务器发送ajax请求,以设置一种“心跳”。 当心跳停止时,浏览器关闭,因此您终止会话。 但同样:这是一个可怕的黑客。 在这种情况下,主要的问题是,如果服务器和客户端失去同步或者出现javascript错误,很容易出现心跳失败的误报,并且会产生一个副作用,即你的会话永远不会过期。

不幸的是,这是不可能的。 你可以在网上找到声称他们可以做到这一点的例子,但它们有时会以非常微妙的方式存在缺陷。

没有一致的方法来通过javascript检测浏览器关闭。 如果您担心挂起的会话太多,请减少服务器上的会话超时。 如果您这样做,您还需要通知您的用户他们需要保持活动状态,以免丢失任何工作。

如果您的客户端脚本向服务器端应用程序发送了AJAX心跳,则可能会使用丢失的节拍来关闭会话。

您可以参考父窗口中的所有子窗口,您需要onfocus来检查子窗口,以便在您的父母获得焦点时检查孩子是否在那里