调用时得到一个空对象
getEventListeners(document.querySelector('.someclass'));
可能是因为监听器没有连接到.someclass
元素本身(直接事件),而是连接到它的祖先之一(委托事件)。这里有一个很好的解释。
getEventListeners
您可以通过调用指定节点及其所有祖先来列出委托事件和直接事件。这个函数应该可以解决问题:
getAllEventListeners = function(el) {
var allListeners = {}, listeners;
while(el) {
listeners = getEventListeners(el);
for(event in listeners) {
allListeners[event] = allListeners[event] || [];
allListeners[event].push({listener: listeners[event], element: el});
}
el = el.parentNode;
}
return allListeners;
}
但是,这将输出与 Krasimir 在他的回答中提到的“事件侦听器”选项卡(“过滤器”选项设置为“所有节点”)完全相同的内容。