每当用户关闭浏览器窗口时,我都需要清除一些会话变量。窗口可以通过两种方式关闭:
我正在使用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。
答案 0 :(得分:3)
试试这个
$(window).on('beforeunload', function(){
return 'Are you sure you want to leave?';
});
$(window).on('unload', function(){
logout();
});
此解决方案适用于所有浏览器,我已对其进行了测试。