好吧,最简单的事情就是直接覆盖页面脚本,然后重新分配事件null
。
window.onbeforeunload = null;
这应该适用于任何地方,除非它们真的是恶意的,并且不断重新分配它。在这种情况下,保持设置的循环null
可能会起作用。
while(true) {
if (window.onbeforeunload != null) {
window.onbeforeunload = null;
}
}
现在,请注意,有些页面会使用它。上传YouTube上传页面:如果您在上传过程中离开,可能会失去数小时的进度!或者您填写的网页表单可能不想再填写,或者您可能不想重新输入的消息(论坛/电子邮件)。使用此功能,您将受到保护。
另一个问题是任何使用它的页面用于某些次要目的,例如通过AJAX保存数据。他们可能会使用此事件来触发保存操作,并希望用户花费足够长的时间来单击按钮以使请求通过。同样,这通常是为了让您远离自己。
但是,显然,我们都知道很多页面都会用它来生病。因此,如果您知道要使用的任何页面,您可以随时使用白名单系统。真的没有办法阻止这个动作,没有完全阻止window.onbeforeunload
,并且可能采取任何(可能是好的)动作。
没有办法(没有给定页面代码的先验知识)在停止弹出框的同时保持好的动作。这个盒子是不是一个alert()
。该框由浏览器生成,作为预期的行为onbeforeunload
。一个人通过制作他们指定的任何函数来创建它来window.onbeforeunload
返回一个字符串 该字符串将在弹出窗口中打印出来。
window.onbeforeunload = function() {
//Whatever
return "WARNING! You have unsaved changes that may be lost!";
}
因此,如果不删除该功能,您将无法阻止弹出窗口。
另外,如果你找到了办法,任何AJAX都会失败。弹出窗口给出了请求时间,没有它,数据可能会丢失。
至于onunload
,不应该用这个阻止你。因为它在页面卸载后触发。但为了安全起见,你可以随时做一window.onunload = null;
件事,应该照顾好。