通过 jQuery 检测关闭窗口事件

IT技术 javascript jquery jquery-events
2021-02-03 03:04:23

能否请您给我检测的最好方法只有窗口关闭事件所有的浏览器的jQuery?

我的意思是单击X浏览器上的按钮 或window.close(),而不是F5表单提交 window.location或链接。我一直在寻找许多线程,但还没有找到正确的方法。

6个回答

您可以使用:

$(window).unload(function() {
    //do something
}

Unload() 在 jQuery 1.8 版中已弃用,因此如果您使用 jQuery > 1.8,您甚至可以使用 beforeunload 代替。

每当用户出于任何原因离开您的页面时,都会触发 beforeunload 事件。

$(window).on("beforeunload", function() { 
    return confirm("Do you really want to close?"); 
})

浏览器窗口关闭事件

2021-03-24 03:04:23
它需要在 a 中$(document).ready(function() {})还是可以在 a之外?
2021-03-26 03:04:23
object $(window) 与 $(document) 不同,因此您可以在 document-ready 语句之外使用,但是如果您需要将此绑定与文档内的某些内容结合起来,则必须使用 document-ready。
2021-03-26 03:04:23
最佳解决方案它的工作我已经搜索并且我尝试了很多东西但是对我有用的mos合适的功能是这个
2021-03-28 03:04:23
嗯,这意味着无法检测适用于所有浏览器的窗口关闭事件?感谢你的信息。
2021-04-14 03:04:23

没有用于捕获浏览器关闭事件的特定事件。

您只能在卸载当前页面时捕获。

通过这种方法,它会在刷新/导航当前页面时生效。

即使计算鼠标事件的 XY 位置也不会给您带来好的结果。

unload() 方法在 jQuery 1.8 版中被弃用。

所以如果你使用的版本早于 1.8

然后使用 -

$(window).unload(function(){
alert("Goodbye!");
});

如果您使用的是 1.8 及更高版本

然后使用 -

window.onbeforeunload = function() {
    return "Bye now!";
};

希望这会奏效:-)

没有用于捕获浏览器关闭事件的特定事件。但是我们可以通过浏览器位置 XY 来检测。

<script type="text/javascript">
$(document).ready(function() {
  $(document).mousemove(function(e) {
    if(e.pageY <= 5)
    {
        //this condition would occur when the user brings their cursor on address bar 
        //do something here 
    }
  });
});
</script>
你好呀!我编辑了你的帖子,把所有的 HTML 都放在代码格式中,因为它被错误地解析为 HTML 标签并且没有显示出来。以后,请注意显示您的帖子外观的预览,因为您的答案可能与您期望的有很大不同!
2021-03-25 03:04:23

结合 mousemove 和 window.onbeforeunload 事件:- 我用于为审计表设置超时。

 $(document).ready(function () {
 var checkCloseX = 0;
        $(document).mousemove(function (e) {
            if (e.pageY <= 5) {
                checkCloseX = 1;
            }
            else { checkCloseX = 0; }
        });

        window.onbeforeunload = function (event) {
            if (event) {
                if (checkCloseX == 1) {

                    //alert('1111');
                    $.ajax({
                        type: "GET",
                        url: "Account/SetAuditHeaderTimeOut",
                        dataType: "json",
                        success: function (result) {
                            if (result != null) {
                            }
                        }
                    });
                }
            }
        };
  });