捕获浏览器窗口关闭事件,同时排除表单提交和超链接
jQuery 中的 beforeunload 事件旨在检测用户何时离开页面。但是,此事件也会在表单提交时触发,这在某些情况下可能是不可取的。本文探讨了一种从 beforeunload 事件中排除表单提交和超链接(除其他框架之外)的方法。
为了实现此目的,我们首先将变量 inFormOrLink 初始化为 false。当用户单击超链接或提交表单时,我们将 inFormOrLink 设置为 true。
在 beforeunload 事件处理程序中,我们检查 inFormOrLink 的值。如果属实,我们会提示用户确认,并显示消息“您真的要关闭吗?”相反,如果 inFormOrLink 为 false,我们返回 null 以抑制确认提示。
这是 jQuery 1.7 及以上版本的修订代码片段:
var inFormOrLink = false; $('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 = false; $('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; });
这种方法有效地捕获了浏览器窗口关闭事件,同时排除了表单提交内容和超链接(来自其他框架的除外)。
以上是如何捕获浏览器窗口关闭事件而不触发表单提交或超链接?的详细内容。更多信息请关注PHP中文网其他相关文章!