我有一个onbeforeunload事件处理程序附加到页面,每次页面重新加载/重定向时都会执行。
window.onbeforeunload = function() {
console.log("do something");}
我不希望在测试期间运行此脚本。我想在我自己的测试环境中禁用它。
有没有办法取消绑定这个onbeforeunload事件?我使用JavaScript,以jQuery作为框架,所以jQuery中的答案会很好。
答案 0 :(得分:34)
在javascript函数中可以覆盖。您可以简单地为其指定一个新目的:
window.onbeforeunload = function () {
// blank function do nothing
}
这将完全覆盖现有版本的window.onbeforeunload
。
注意:为什么不首先删除设置此功能的代码行?或者,如果你不能,你将不得不在定义后设置这个空白函数,只是为了确保它不会再被覆盖
答案 1 :(得分:1)
与此问题没有立即关联,但可能会对某人有所帮助。这是我在Angular 1.x和TypeScript中使用的:
this.$window.onbeforeunload = () => undefined;
答案 2 :(得分: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');
答案 3 :(得分:0)
要添加:
function f_beforeunload(e) {console.log("do something");}
window.addEventListener("beforeunload", f_beforeunload);
要删除:
window.removeEventListener("beforeunload", f_beforeunload);