Javascript 是否有方法确定浏览器窗口已关闭?

Javascript 是否有方法确定浏览器窗口已关闭?,javascript,dom-events,Javascript,Dom Events,如何识别浏览器的“关闭”按钮已被单击?浏览器没有关闭事件,因此您无法真正判断用户何时关闭了其浏览器,因为浏览器中存在一些潜在的解决方法 如果您让我们知道您正在努力实现的目标,可能会有另一种方法: $(window).unload( function () { alert("Bye now!"); } ); 帮你 但它是在jQuery中 您应该检查一下,它有关于这个特定方法(及其缺点)的更多信息 编辑:添加链接。从中,最接近的匹配似乎是OnUnload事件。但是,这也会捕获页面以外的导航(因此,

如何识别浏览器的“关闭”按钮已被单击?

浏览器没有关闭事件,因此您无法真正判断用户何时关闭了其浏览器,因为浏览器中存在一些潜在的解决方法

如果您让我们知道您正在努力实现的目标,可能会有另一种方法:

$(window).unload( function () { alert("Bye now!"); } );
帮你

但它是在jQuery中

您应该检查一下,它有关于这个特定方法(及其缺点)的更多信息

编辑:添加链接。

从中,最接近的匹配似乎是OnUnload事件。但是,这也会捕获页面以外的导航(因此,如果用户实际单击链接,您不希望函数运行)


无法保证服务器将收到浏览器窗口已关闭的消息。例如,旧的方法,包括创建一个小的弹出窗口,将被大多数现代浏览器阻止。使用AJAX可能会起作用,但浏览器窗口可能会在尝试连接之前关闭

用户离开页面时通常会触发一个事件(卸载?)-这可能是特定于浏览器的

还有一个属性window.closed,它是在窗口对象的关联窗口关闭后设置的。这通常在引用弹出窗口时使用

我不确定卸载事件是在设置“closed”属性之前还是之后触发的-您必须进行实验


您可能无法区分关闭的窗口和已转到其他站点的浏览器。

您可以设置一个ajax调用,每隔几秒到几分钟(取决于您想要的时间精度)定期轮询服务器,并跟踪服务器端的上次命中时间。不完全准确(例如,网络问题可能会导致误报),但根据您的要求,可能是一种选择。

您应该在卸载前使用
on
,而不是
onunload
。IE7(可能还有其他浏览器)在触发
unload
事件时并不是100%可靠,但它似乎总是在unload事件之前触发

例如:

window.onbeforeunload=function(){}
或者,如果您使用的是prototype.js:

Event.observe(window, 'beforeunload', function(){});

我同意northsouthwhat,但请注意,onbeforeunload可能在您可能希望使用它的所有浏览器中都不受支持

这是一个技巧,但似乎对我有用。它也可能是IE特有的。我只为IE环境编写代码

<body onunload="if(self.screenTop>9000){unloadFunction();}">


编辑以添加my unloadFunction打开一个弹出窗口,终止用户会话。您不能在自己关闭的页面上执行任何操作。”因为它已经关闭了!;)

也许,我在一个IE6的环境,但我们正在升级到IE7,所以我可以在深斗斗斗!X(你为一个只支持IE的环境编写代码?这是祝福还是诅咒?