gpt4 book ai didi

javascript - 是否可以监视 HTML 元素中的事件监听器以了解其中之一何时被删除?

转载 作者:行者123 更新时间:2023-11-28 17:07:18 24 4
gpt4 key购买 nike

我在页面中遇到问题,在某些情况下未触发事件。这不是我的代码,我正在尝试调试缩小和模糊的 JavaScript 代码,我快要疯了。

在我们网站上回复评论时,如果回复文本为空,则会触发此事件(用于注册用户单击回复按钮的分析事件)。如果有文本,则不会触发该事件。

该元素是 <span>标签,但事件监听器实际上附加到 <body>标签。我当前的理论是,当回复中实际存在文本时正在执行的某些代码正在删除该事件监听器,因此它不会被触发。

那么,有没有办法监控 <body> 中的事件监听器?了解此事件监听器何时(以及在代码中的何处)被删除?

更新我们发现了问题。我们用于注释的第三方库正在删除按钮的父元素,这使得事件无法传播到正文。

最佳答案

如果您可以在删除事件处理程序之前运行脚本代码,则可以将 document.body 上的 removeEventListener 替换为您自己的函数:

const original = document.body.removeEventListener;
document.body.removeEventListener = function(...args) {
console.log("Removed");
return original.apply(this, args);
};

function handler() {
console.log("Clicked");
}
document.body.addEventListener("click", handler);
document.body.removeEventListener("click", handler);

(为了覆盖您的基础,您还可以将 onclick (或正在使用的任何内容)转换为访问器,以便您可以在代码执行 document.body.onclick = null;< 时捕获它)

还有其他方法可以添加和删除处理程序,但希望您使用的任何库都使用标准。

<小时/>

旁注:要确认您关于处理程序被删除的理论,您可以在 Chrome 的开发工具中检查元素上的处理程序:右键单击页面并选择“检查元素”,向上导航到 body,然后查看“事件监听器”选项卡。

关于javascript - 是否可以监视 HTML 元素中的事件监听器以了解其中之一何时被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55511260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com