首页 > web前端 > js教程 > 如何捕获浏览器窗口关闭事件而不触发表单提交或超链接?

如何捕获浏览器窗口关闭事件而不触发表单提交或超链接?

Susan Sarandon
发布: 2024-12-07 12:56:14
原创
544 人浏览过

How Can I Capture Browser Window Close Events Without Triggering on Form Submissions or Hyperlinks?

捕获浏览器窗口关闭事件,同时排除表单提交和超链接

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板