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

标签 javascript c# asp.net webforms

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

最佳答案

这不是普通 Web http 协议(protocol)中提供的内容。没有真正的方法可以确定浏览器何时关闭;你只能“有点”知道。你必须拼凑出一个丑陋的 hack 来获得任何级别的确定性,即便如此,它也必然会在大量边缘情况下失败或导致令人讨厌的副作用。

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

关于javascript - 我想检测用户何时关闭浏览器窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675576/

相关文章:

c# - 以本地系统而非当前用户身份读取本地文件

C# Process.GetProcessById(4) 抛出 System.ComponentModel.Win32Exception

c# - 将 Ajax 选项卡容器宽度设置为 100%

c# - 使用 GraphDiff 更新多对多关系会导致错误

javascript - Node.js 两次调用 require()

c# - SSRS 2012 中的自定义表单例份验证

c# - 获取点击的 Html 链接的 ID 并将其用作 C# 中 SqlDataSource 的参数

javascript - 用于验证的自定义 Angular JS 指令

javascript - 必填字段验证器不适用于 JQuery 选择的下拉列表

javascript - 如何在 JavaScript 中将邻接矩阵转换为邻接列表?