点击事件有时会起作用,而其他时候不会起作用-Chrome扩展程序

时间:2019-10-29 10:46:09

标签: javascript google-chrome-extension

我正在编写Chrome扩展程序,该扩展程序可以侦听和捕获用户的点击事件。 这就是我捕获事件的方式

document.addEventListener('click', async function (e) {

});

它在许多情况下都很好用,但是在其他情况下,单击事件从未触发,而是有一个或多个焦点事件触发。我认为当JavaScript将设置值更改为隐藏输入或类似内容时,可能会触发focusout事件。

问题是我无法理解为什么在某些情况下未触发点击事件。我可以认为,在将函数(如上所示的函数)附加到内容的那一刻,仍有一些元素尚未附加到DOM,但是我不确定并且确实没有找到文档。或一种测试方法。 如果有人可以帮我这个忙,我会很感激

1 个答案:

答案 0 :(得分:1)

侦听click事件的页面元素函数可以在该事件上调用preventDefault()或stopPropagation(),以使您的侦听器看不到它。

尝试在传播链window上的第一个事件目标的事件的第一阶段,捕获阶段监听:

window.addEventListener('click', yourFunction, true);

或对于现代浏览器:

window.addEventListener('click', yourFunction, {capture: true});

如果这一项也被取消,则您必须执行以下两项操作中的一项或两项:

  1. 使用"run_at": "document_start"声明内容脚本
  2. 收听mousedown事件