window.close()和beforeunload事件
每当用户关闭浏览器窗口时,我需要清除一些会话变量。 窗口可以通过两种方式关闭:
- 通过按下窗口关闭按钮的正常方式
- 按下窗口内的自定义按钮
我正在使用jQuery,所以监听器是:
// clear some session variables $(window).bind('beforeunload', function() { makeAjaxCall(some, params); });
通过调用最终执行的函数关闭窗口:
window.close();
问题是关闭窗口的第二种方法只触发FF中的beforeunload
事件。 在Chrome中,第二种方式仅适用于Safari,它根本不起作用。 有什么想法吗?
解决方案 (到目前为止):
// clear search filter whenever the user closes the window $(window).on('beforeunload', function() { // most browsers except Safari doSomeMagic(param); return; }).on('unload', function() { // Chrome doSomeMagic(param); });
这适用于大多数浏览器:使用window.close()和/或本机浏览器按钮关闭窗口时,IE8 +,Chrome,FF
如果窗口由本机浏览器窗口关闭,它也适用于Safari。
根本不适用于Opera。
试试这个
$(window).on('beforeunload', function(){ return 'Are you sure you want to leave?'; }); $(window).on('unload', function(){ logout(); });
此解决方案适用于所有浏览器,我已对其进行了测试。