首页 > web前端 > js教程 > 如何在不拦截表单提交的情况下检测浏览器窗口关闭?

如何在不拦截表单提交的情况下检测浏览器窗口关闭?

Barbara Streisand
发布: 2024-12-13 22:40:14
原创
321 人浏览过

How Can I Detect Browser Window Closure Without Intercepting Form Submissions?

不拦截表单提交捕获浏览器窗口关闭事件

为了专门捕获浏览器窗口关闭事件,避免与表单提交冲突,jQuery的beforeunload稍作修改就可以利用该事件。

beforeunload 事件就其本身而言,触发导致页面被放弃的任何操作。为了将其仅限于窗口关闭事件,我们采用以下方法:

  • 我们定义一个标志 inFormOrLink,当单击 链接或
  • 链接或
时,该标志设置为 true。已提交。这表明用户有意通过表单或链接离开页面。
  • 在 beforeunload 事件处理程序中,我们检查 inFormOrLink 的值。
    • 如果为 true ,该事件是由表单提交或链接点击触发的。在本例中,我们向用户返回一条确认消息。
    • 如果为 false,则该事件是由窗口关闭操作触发的,我们可以安全地让浏览器不受干扰地关闭窗口。
  • jQuery 1.7 及更高版本的更新代码:
    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; 
    })
    登录后复制

    对于旧版本的 jQuery(1.7 之前):
    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; 
    })
    登录后复制

    以上是如何在不拦截表单提交的情况下检测浏览器窗口关闭?的详细内容。更多信息请关注PHP中文网其他相关文章!

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