如果我只知道元素和事件,但不知道函数,有没有办法删除事件侦听器?
就像是:
var foo = getElementById("foo");
foo.removeEventListener('click');
Run Code Online (Sandbox Code Playgroud) 我知道如何从元素中删除侦听器,但是如何从页面上的每个元素中删除每个事件侦听器?
jQuery 和纯 JS 解决方案会很好。
在外部库的某个地方(当然,我无法更改),以这种方式创建了一个事件侦听器:
someElement.addEventListener('keydown', function(e) {
whatever();
});
Run Code Online (Sandbox Code Playgroud)
我需要摆脱这个监听器或以某种方式覆盖它。但似乎无法做到,因为我没有任何方法可以引用使用的匿名函数。
这不是唯一被删除的侦听器。卸下所有的keydown听众会也行,如果有可能。
我已经看到一个选项是克隆元素并替换它,但我不能这样做,因为有很多初始化,并且创建了很多其他事件侦听器。我只需要取消那个keydown。
有什么我可以做的吗?
我正在寻找迭代对象getEventListeners(obj)返回的方法.这样,我就不需要特定的代码来迭代事件监听器类型,或者检查它们是否存在于checked元素上.我的目标是从元素中删除一些事件侦听器.例如,删除所有鼠标相关的,并保留其他.
谢谢
我对ionic 4项目使用了角路由(@ angular / router)以禁用ionic 4中的设备后退按钮prevent-default不起作用,下面是我的代码
app.component.ts
this.platform.backButton.subscribe(() => {
if (this.router.url === '/Login') {
this.util.presentAppExitAlert();
} else {
// event.preventDefault();
console.log("invoing url ", this.router.url);
}
});
});
Run Code Online (Sandbox Code Playgroud)
我无法在此处禁用设备后退按钮的任何帮助
如果有一个可以执行事件的按钮但是看起来没有设置事件处理程序,我怎么能找到触发器代码?例如,在bootsrap模板中的小部件工具箱按钮.按钮只有一个类,但它们运行良好.
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
Run Code Online (Sandbox Code Playgroud)
这种崩溃的代码在哪里起作用?
javascript ×5
dom-events ×2
jquery ×2
angular ×1
browser ×1
dom ×1
events ×1
html ×1
ionic3 ×1
ionic4 ×1