RemoveAllEventListeners

没法直接移除所有监听器,难受死了,不过查了下 stackoverflow,发现有个叫做getEventListeners可以获取 EventTarget 的所有监听器。

于是我就基于这个函数,给 EventTarget 补上了RemoveAllEventListeners这个方法。

1
2
3
4
5
6
7
8
EventTarget.prototype.removeAllEventListeners = function (eventname) {
let listeners = getEventListeners(this)
if (listeners[eventname]) {
listeners[eventname].forEach((e) => {
this.removeEventListener(e.type, e.listener);
})
}
}