在加载事件处理程序之前取消
Cancel onbeforeunload event handler?
我在页面上附加了一个onbeforenload事件处理程序,每当页面重新加载/重定向时都会执行。
window.onbeforeunload = function() {
console.log("do something");}
我不希望在测试期间运行此脚本。我想在我自己的测试环境中禁用它。
是否有某种方法可以解除此onbeforenload事件的绑定?我使用的是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;
jQuery≥1.7
在jQuery1.7以后的版本中,事件API已经更新,.bind()/.unband()仍然可以向后兼容,但首选的方法是使用on()/of()函数。下面是
$('#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 )
相关文章:
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 按键处理程序取消事件
- 元素单击处理程序由一个神秘的函数取消设置
- 引导程序3-下拉菜单项中的取消按钮
- 如何在点击链接后从用户取消对话框中获得回调以选择移动应用程序
- 根据文件类型取消绑定和重新绑定click事件处理程序
- 如何从facebook webhook广告的页面中取消订阅应用程序
- 在javascript中使用.replacement()函数时,请避免取消挂起事件处理程序
- 正在取消绑定jQuery事件处理程序
- 是避免IE内存泄漏所需的取消挂起事件处理程序
- 选中/取消选中所有子复选框 jquery 引导程序
- 节点 JS 取消处理程序错误事件
- 单击事件执行单击和悬停事件处理程序,即使单击事件处理程序取消绑定所有处理程序也是如此
- 引导程序使用 js 检查/取消选中多个元素
- 使用 ajax 加载的页面绑定和取消绑定事件处理程序
- “用户取消了身份验证”时,从Chrome扩展程序使用AuthWithOAuthPopup
- 当 2 个或更多相同时,是否可以在 jQuery 中取消绑定特定的事件处理程序
- 取消 ajax 请求:处理程序是否仍可执行
- 捕获 Java 小程序取消按钮
- 如何在chrome扩展程序中静默取消webRequest