jam*_*zyx 8 javascript google-chrome event-listener
基本上,我正在制作一个扩展,提供基于页面元素的分析。由于元素总数通常达到 > 5,000 个,但与它们关联的点击事件的元素(我唯一关心的元素)通常 < 50 个,如果我可以将焦点缩小到仅这些元素,那将对性能带来巨大的好处我很感兴趣。Chrome 的开发工具函数 getEventListeners() 正是我所追求的,当然,它只能在 Chrome 控制台中工作。对我来说,在 Chrome 扩展中一定有办法做到这一点似乎是合乎逻辑的?纯 JS 显然会更可取,但目前我的范围仅限于单个 Chrome 扩展,任何在那里工作的东西都可以完成这项工作。
谢谢!
小智 2
好吧,基本上你可以window.getEventListeners()像这样重新创建这个函数:
const { addEventListener: nativeAddEventListenerPrototype } = Document.prototype;
const activeListeners = new Set();
Document.prototype.addEventListener = function(...nativeArgumentsList) {
activeListeners.add(nativeArgumentsList);
void Reflect.apply(nativeAddEventListenerPrototype, this, nativeArgumentsList);
};
Run Code Online (Sandbox Code Playgroud)
只需确保在页面加载之前注入此代码,否则它将无法正确执行,然后基本上每次网站创建事件侦听器时,它都会存储在该集合中,以便您可以导航到每个侦听器并按照您的意愿进行操作。希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1207 次 |
| 最近记录: |