我在页面上添加了一个onbeforeunload事件处理程序,每次页面重新加载/被重定向时都会执行。
window.onbeforeunload = function() {
console.log("do something");}
我不想让这个脚本在我的测试期间运行。我想在我的测试环境中禁用它。
有没有一种方法可以解除onbeforeunload事件的绑定?我正在使用JavaScript,并使用jQuery作为框架,因此希望提供一个jQuery的答案。
我在页面上添加了一个onbeforeunload事件处理程序,每次页面重新加载/被重定向时都会执行。
window.onbeforeunload = function() {
console.log("do something");}
我不想让这个脚本在我的测试期间运行。我想在我的测试环境中禁用它。
有没有一种方法可以解除onbeforeunload事件的绑定?我正在使用JavaScript,并使用jQuery作为框架,因此希望提供一个jQuery的答案。
在 JavaScript 中,函数可以被重写。您可以简单地为其分配一个新目的:
window.onbeforeunload = function () {
// blank function do nothing
}
这将完全覆盖现有版本的window.onbeforeunload
。
注意:为什么不直接删除设置此函数的代码行呢?或者如果您无法删除,则必须在其定义之后设置此空白函数,以确保它不会再次被覆盖。
添加:
function f_beforeunload(e) {console.log("do something");}
window.addEventListener("beforeunload", f_beforeunload);
要删除:
window.removeEventListener("beforeunload", f_beforeunload);
虽然与此问题不直接相关,但可能仍有帮助。以下是我在 Angular 1.x 和 TypeScript 中使用的代码:
this.$window.onbeforeunload = () => undefined;
onbeforeload
的默认值是null
,所以你不能只将其设置为null
吗?this.$window.onbeforeunload = null;
- rybo111jQuery ≥ 1.7
从 jQuery 1.7 开始,事件 API 已经更新,.bind()/.unbind() 仍然可用于向后兼容,但首选方法是使用 on()/off() 函数。现在应该使用以下代码:
$('#myimage').click(function() { return false; }); // Adds another click event
$('#myimage').off('click');
$('#myimage').on('click.mynamespace', function() { /* Do stuff */ });
$('#myimage').off('click.mynamespace');
$( window ).on( "unload", handler )
由于 .unload() 方法只是 .on( "unload", handler ) 的简写,因此可以使用 .off( "unload" ) 进行分离。
$( window ).off( "unload", handler )
.unload()
方法只是一个简写形式,即.on(“unload”,handler)
,因此可以使用.off(“unload”)
进行分离。 - murthy naika kunload != onbeforeunload
因此 **onbefore
**。 - brandito
window.onbeforeunload = null;
该代码意为取消页面关闭前的警告提示。 - Limon Monte