取消onbeforeunload事件处理程序?

问题描述 投票:19回答:3

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

window.onbeforeunload = function() {
  console.log("do something");}

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

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

javascript jquery onbeforeunload
3个回答
34
投票

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

window.onbeforeunload = function () {
  // blank function do nothing
}

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

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


1
投票

没有立即与这个问题相关,但可能会帮助某人。这是我在Angular 1.x和TypeScript中使用的:

this.$window.onbeforeunload = () => undefined;

0
投票

jQuery≥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');
© www.soinside.com 2019 - 2024. All rights reserved.