首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.close()和卸载前事件

window.close()和卸载前事件
EN

Stack Overflow用户
提问于 2014-02-05 11:43:19
回答 1查看 9.9K关注 0票数 2

每当用户关闭浏览器窗口时,我需要清除一些会话变量。该窗口可以通过两种方式关闭:

  • 按下“关闭窗口”按钮的正常方式
  • 通过按下窗口内的自定义按钮

我使用的是jQuery,所以侦听器是:

代码语言:javascript
复制
// clear some session variables
$(window).bind('beforeunload', function() {
    makeAjaxCall(some, params);
});

通过调用最终执行的函数关闭该窗口:

代码语言:javascript
复制
window.close();

问题是关闭窗口的第二种方法只触发FF中的beforeunload事件。在Chrome中,第二种方式有时只起作用,而在Safari中则根本不起作用。有什么想法吗?

解决方案(目前为止):

代码语言:javascript
复制
// 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);
});

这在大多数浏览器中都适用:使用IE8+ ()和/或本机浏览器按钮关闭窗口时,window.close、Chrome、FF

如果本机浏览器窗口关闭了Safari窗口,则它也能工作。

在歌剧里根本不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-05 12:36:22

尝尝这个

代码语言:javascript
复制
$(window).on('beforeunload', function(){
  return 'Are you sure you want to leave?';
});

$(window).on('unload', function(){
     logout();

});

这个解决方案适用于所有浏览器,我已经对它进行了测试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21576316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档