我正在编写Chrome扩展程序,该扩展程序可以侦听和捕获用户的点击事件。 这就是我捕获事件的方式
document.addEventListener('click', async function (e) {
});
它在许多情况下都很好用,但是在其他情况下,单击事件从未触发,而是有一个或多个焦点事件触发。我认为当JavaScript将设置值更改为隐藏输入或类似内容时,可能会触发focusout事件。
问题是我无法理解为什么在某些情况下未触发点击事件。我可以认为,在将函数(如上所示的函数)附加到内容的那一刻,仍有一些元素尚未附加到DOM,但是我不确定并且确实没有找到文档。或一种测试方法。 如果有人可以帮我这个忙,我会很感激
答案 0 :(得分:1)
侦听click
事件的页面元素函数可以在该事件上调用preventDefault()或stopPropagation(),以使您的侦听器看不到它。
尝试在传播链window
上的第一个事件目标的事件的第一阶段,捕获阶段监听:
window.addEventListener('click', yourFunction, true);
或对于现代浏览器:
window.addEventListener('click', yourFunction, {capture: true});
如果这一项也被取消,则您必须执行以下两项操作中的一项或两项:
mousedown
事件