使用Javascript(或任何其他语言)进行浏览器/选项卡关闭检测

Browser/tab close detection using Javascript (or any other language)

本文关键字:选项 浏览器 检测 Javascript 任何 其他 语言 使用      更新时间:2023-09-26

我在不同的地方搜索了这个问题,但他们只提到了Javascript window.unloadwindow.onbeforeunload的使用。此外,它在Chrome浏览器中大多数时候都不起作用,因为它被屏蔽了。

那么谷歌是如何做到这一点的呢?如果我们正在撰写一封邮件,并错误地关闭了标签,谷歌会提示我们:;你确定吗"盒

有人能帮我吗?

实际上,我想做的是询问用户的确认,当他填写表格时,错误地点击了关闭选项卡。如果是,我允许他导航离开,否则他会留在页面上;继续填写他的表格。

我进行了测试,发布在MDN上的示例在Chrome中运行良好。

<script>
    window.onbeforeunload = function (e) {
        e = e || window.event;
        // For IE and Firefox prior to version 4
        if (e) {
            e.returnValue = 'Any string';
        }
        // For Safari
        return 'Any string';
    };
    function formSubmit() {
      window.onbeforeunload = null; 
   }
</script>

   <form onsubmit="formSubmit()">...</form>

通过这种方式打开一个对话框,该对话框不会被弹出窗口阻止程序阻止,因为它源于用户单击。

如果您只想在用户更改了页面上表单中的任何内容后询问他们是否要离开页面,请查看PageHasFormChanges。请记住,我开发它是为了在非常简单的页面上使用,只有一两个表单。

PageHasFormChanges:一个jQuery插件,用于检查页面上是否有任何形式的更改,并在离开页面前警告用户。

您不需要做任何事情,只需在页面上加载脚本即可。您可以更改默认值:

JoelPurra.PageHasFormChanges.setOptions({
    leavingPageWarningMessage: "Are you sure?"
});

如果您使用ajax提交表单,可以考虑将resetWarningOnPreventedSubmit设置为true

您可以使用jquery卸载函数:

$(window).unload(function() {
  alert('Handler for .unload() called.');
});