防止 onbeforeunload 在任何情况下关闭页面

7

我希望在任何情况下防止浏览器关闭页面,或者在其他情况下,当onbeforeunload被调用时,防止浏览器执行任何操作。

以下是我尝试过的代码:

 (function() {
    var proxied = window.onbeforeunload;
    window.onbeforeunload = function(e) {
        e.preventDefault();
        e.stopPropagation();
            //i want to stop everything
        console.log('stay here');
        // return 'message';
    };
})();
  • 在离开页面之前,我希望执行一个操作(断开聊天)

如果您可以防止浏览器关闭窗口,我想互联网将会看起来非常不同。据我所知,这是不可能的。 - firelynx
这是一个函数调用吗?e.stopPropagation?因为你没有使用()来调用它。 - firelynx
2个回答

11

你无法直接阻止用户离开页面(这将导致垃圾邮件/广告网站滥用,试图让你留在页面上),但可以显示一些东西,例如窗口,它会引起用户确认提示。请查看使用JavaScript防止网页导航,可以指导你如何实现你想要的效果。


我想在离开页面之前执行一个操作(断开聊天)。 - user4069483
你正在使用什么框架进行聊天?你是否尝试发起 AJAX 请求?你需要确保不要像异步请求一样执行请求(将它们设置为同步),否则当浏览器试图离开页面时,它会取消这些请求。 - Blue
我想关闭聊天并通知其他人,(此人)用户已离开聊天。 - user4069483
就像我之前提到的那样,这是你想要执行的函数。只需用你打算使用的内容替换console.log,它就会执行(只要你不进行异步请求)。 - Blue

3

无法阻止浏览器关闭,浏览器不允许这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接