如何捕获浏览器窗口关闭事件?

凯尔:

我想捕获浏览器窗口/选项卡关闭事件。我已经尝试使用jQuery以下内容:

jQuery(window).bind(
    "beforeunload", 
    function() { 
        return confirm("Do you really want to close?") 
    }
)

但这也适用于表单提交,这不是我想要的。我想要一个仅在用户关闭窗口时才触发的事件。

Slaks:

beforeunload每当用户出于任何原因离开您的页面时,都会触发事件。

例如,如果用户提交表单,单击链接,关闭窗口(或选项卡)或使用地址栏,搜索框或书签进入新页面,则会触发该事件。

您可以使用以下代码排除表单提交和超链接(其他框架除外):

var inFormOrLink;
$('a').on('click', function() { inFormOrLink = true; });
$('form').on('submit', function() { inFormOrLink = true; });

$(window).on("beforeunload", function() { 
    return inFormOrLink ? "Do you really want to close?" : null; 
})

对于1.7之前的jQuery版本,请尝试以下操作:

var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind("beforeunload", function() { 
    return inFormOrLink ? "Do you really want to close?" : null; 
})

live方法不适用于该submit事件,因此,如果添加新表单,则还需要将处理程序绑定到该事件。

请注意,如果其他事件处理程序取消了提交或导航,则如果稍后实际上关闭了该窗口,则将丢失确认提示。您可以通过在submitclick事件中记录时间,然后检查是否在beforeunload几秒钟后发生来解决此问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试检测浏览器关闭事件

关闭浏览器窗口/选项卡时如何删除localStorage项目?

如何关闭浏览器窗口中的当前选项卡?

如何防止关闭浏览器窗口?

如何确定何时关闭浏览器?

如何通过保持webDriver处于活动状态来关闭整个浏览器窗口?

如何关闭浏览器后退按钮上的颜色框弹出窗口

如何关闭Chrome浏览器弹出窗口?

如何捕获或收听浏览器通知?

如何在解决承诺之前阻止浏览器窗口在AngularJS中关闭

当浏览器选项卡或窗口关闭时,是否会触发一般事件?

电子浏览器窗口防止Control + W关闭窗口

如何使用Vue.js在每个浏览器中关闭自动保存密码弹出窗口

使用VBA关闭浏览器窗口

检测浏览器关闭事件时如何显示自定义弹出窗口?

谷歌浏览器杀死进程如何从终端关闭窗口?

浏览器关闭事件

浏览器关闭事件(按流程)

如何在浏览器上关闭窗口(ASP.NET MVC)

如何在JavaScript或jquery中跟踪浏览器刷新/返回/标签关闭和浏览器关闭事件

打开和关闭面板时,如何防止浏览器窗口跳回到页面顶部?

用户单击关闭选项卡时如何打开新窗口浏览器?

如何通过拒绝Selenium Webdriver中的弹出窗口来关闭浏览器

关闭浏览器窗口后,如何防止Google Chrome浏览器删除会话Cookie?

如何关闭Jasmine JS中的本机Web浏览器弹出窗口?

检测浏览器关闭事件

如何关闭浏览器标签

关闭浏览器事件

如何在 Angular 中监听浏览器的关闭事件?