如何查看事件处理程序被添加到元素中?

2023-12-14

我有一个错误,看起来像是由附加了单击事件的事件处理程序引起的:

 mxpnl.track_links("#pagebody a", "Click.body");

我想看看如何添加该元素的事件处理程序(以及何时)

我在 Chrome 调试器(开发工具)> 元素中找到了它,然后选择“属性修改时中断”。调试器永远不会中断。

我还选择了它的父 Div(它位于其中)并设置调试器(右键单击元素)> 在子树修改上中断。再说一次,它永远不会破裂。

我在这里做错了什么?


添加事件侦听器并不是属性更改(通常) - 相反,通常它是对addEventListener or an on- 任务。所以,监听属性变化是行不通的。

一种选择是猴子补丁addEventListener以便debugger运行时addEventListener使用匹配的参数调用。例如:

// snippet might not actually enter the debugger due to embedded sandboxing issues

const nativeEventListener = EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener = function(...args) {
  if (this.matches('div') && args[0] === 'click') {
    console.log('listener is being added to a div');
    debugger;
  }
  nativeEventListener.apply(this, args);
}



// then, when an event listener is added, you'll be able to intercept the call and debug it:

document.querySelector('div').addEventListener('click', () => {
  console.log('clicked');
});
<div>click me</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查看事件处理程序被添加到元素中? 的相关文章

随机推荐