如何处理浏览器's window.oneforeunload事件

How to handle browser's window.onbeforeunload event

本文关键字:window 事件 oneforeunload 浏览器 何处理 处理      更新时间:2023-09-26

我想处理window.onbeforeunload事件。我可以这样处理

window.onbeforeunload = function() {
   return "MSG";
}

但在这种情况下,它显示了一个弹出窗口,要求用户确认。我不想要那个确认对话框,而是像event.cancel = true一样直接return false

您不能在onBeforeUnload中执行此操作。原因是;用户已经发送了离开页面的请求,并且该事件已被拦截。确认是你能做的最好的事情,除非你阻止事件进一步上升到事件链(比如onkeydown)。

例如,如果你希望用户不能使用他们的键盘在历史中来回移动,或者重新加载页面,这可以通过使用来实现;

var catchKey = { 
    37: true,  /// left
    39: true  /// right
};
window.onkeydown = function(event) {
    if (catchKey[event.keyCode] && event.ctrlKey) {
        event.preventDefault();
        event.stopPropagation();
    }
}

希望能有所帮助!

基本上你想阻止用户关闭浏览器窗口/选项卡或导航离开你的页面吗?

我相信没有浏览器制造商会让你这么做。。。那么在这种情况下关闭浏览器的唯一方法就是终止进程。

所以:就我所见,不可能。