取消onbeforeunload事件处理程序?

Pra*_*tha 19 javascript jquery onbeforeunload

我有一个onbeforeunload事件处理程序附加到页面,每当页面重新加载/重定向时执行.

window.onbeforeunload = function() {
  console.log("do something");}
Run Code Online (Sandbox Code Playgroud)

我不想在测试期间运行此脚本.我想在我自己的测试环境中禁用它.

有没有办法取消绑定这个onbeforeunload事件?我使用JavaScript,使用jQuery作为框架,因此jQuery中的答案会很好.

Ibu*_*Ibu 35

在javascript函数中可以覆盖.您可以简单地为其指定一个新目的:

window.onbeforeunload = function () {
  // blank function do nothing
}
Run Code Online (Sandbox Code Playgroud)

这将完全覆盖现有版本window.onbeforeunload.

注意:为什么不首先删除设置此功能的代码行?或者,如果你不能,你必须在定义后设置这个空白函数,只是为了确保它不会再次被覆盖

  • 或`window.onbeforeunload = null;` (14认同)

Ole*_*kin 6

加上:

function f_beforeunload(e) {console.log("do something");}
window.addEventListener("beforeunload", f_beforeunload);
Run Code Online (Sandbox Code Playgroud)

去除:

window.removeEventListener("beforeunload", f_beforeunload);
Run Code Online (Sandbox Code Playgroud)