如何识别浏览器的关闭按钮被点击?
答案 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。