有没有办法确定浏览器窗口已关闭?

时间:2008-11-04 06:37:06

标签: javascript javascript-events

如何识别浏览器的关闭按钮被点击?

8 个答案:

答案 0 :(得分:5)

JavaScript Event Reference开始,最接近的匹配似乎是OnUnload事件。但是,这也会导致离开页面导航(因此,如果用户实际点击链接,您不希望这些功能运行。)

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

答案 1 :(得分:3)

会这样:

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

帮助你?

虽然在jQuery中。

你应该检查the link given by Demoli,但它有关于这个特定方法的更多信息(及其缺点)。

编辑:添加链接。

答案 2 :(得分:2)

浏览器没有关闭事件,因此您无法确定用户何时关闭浏览器,This thread

中存在一些可能的解决方法

如果您告诉我们您要实现的目标,可能会有其他方式

答案 3 :(得分:1)

您应该使用onbeforeunload,而不是onunload。在触发unload事件时,IE 7(可能还有其他浏览器)不是100%可靠,但似乎总是触发beforeunload事件。

例如window.onbeforeunload=function(){}

或者,如果您使用的是prototype.js:Event.observe(window, 'beforeunload', function(){});

答案 4 :(得分:1)

这是一个黑客,但它似乎对我有用。它也可能是IE特定的。我为仅IE环境编码。

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

编辑添加我的unloadFunction打开一个弹出窗口,杀死用户的会话。您无法在已关闭的页面上执行任何操作。因为它已经关闭了! ;)

答案 5 :(得分:0)

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

还有一个属性window.closed,它在关联窗口关闭后在窗口对象上设置。当您引用弹出窗口时,通常会使用此选项。

我不确定在设置“已关闭”属性之前或之后是否会触发卸载事件 - 您必须进行实验。

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

我同意northsouthwhat,但请注意,您可能不想在所有浏览器中使用onbeforeunload。