不拦截表单提交捕获浏览器窗口关闭事件 为了专门捕获浏览器窗口关闭事件,避免与表单提交冲突,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; })登录后复制