取消onbeforeunload事件处理程序?

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

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

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

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

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

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

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

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

没有立即与这个问题相关(请不要因为这个问题而投票),但可能会帮助某些人,这是我在Angular 1.x和TypeScript中使用的:

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

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');