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

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

jQuery(window).bind(

"beforeunload",

function() {

return confirm("Do you really want to close?")

}

)

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

回答:

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几秒钟后发生,来解决此问题。

以上是 JavaScript如何捕获浏览器窗口关闭事件? 的全部内容, 来源链接: utcz.com/qa/429421.html

回到顶部