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

时间:2012-03-30 10:35:21

标签: javascript javascript-events

我在不同的地方搜索过这个问题,但他们提到的只是使用javascript window.unload & window.onbeforeunload 。此外,由于它被阻止,它在大多数时候都不适用于chrome 然后谷歌如何设法做到这一点。如果我们正在撰写邮件并错误地关闭标签,谷歌会提示我们“你确定吗?”框。
有人可以帮帮我吗? 我真正想做的是询问用户,当他填写表格并错误地点击标签关闭时。如果是的话,我允许他离开其他他留在页面&继续填写他的表格。

3 个答案:

答案 0 :(得分:7)

我测试过,在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>

这样就会打开一个对话框,弹出窗口阻止程序不会阻止它,因为它来自用户点击。

答案 1 :(得分:2)

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

  

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

您无需执行任何操作,只需在页面上加载脚本即可。您可以更改默认值:

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

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

答案 2 :(得分:1)

您可以使用jquery unload功能:

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