需求场景 

在前端开发中,偶尔需要验证下某个元素上到底绑定了哪些事件,以及监控某个元素上的事件触发情况。

解决方案

普通操作

之前面对这种情况,一般采取的措施就是在各个事件里写console.info,然后进行点击等操作触发事件,或者在控制台trigger元素上的事件,或者dispatchEvent。

这种方法比较繁琐,而且假如触发这个事件之前需要做大量操作,触发时间后需要重新来过,真的是浪费时间啊。

神级操作

今天偶然发现借助Chrome控制台的命令行,可以简单快捷地解决这个问题。

获取事件信息命令: getEventListeners

看到本页面那个精灵球了吗,接下来我们获取那个精灵球上的事件信息。

Chrome控制台输入命令:

getEventListeners(document.querySelector(".diggit"))

  得到结果:

   

chrome控制台会输出一个事件信息数组,图中可以看出精灵球上有一个点击事件,useCapture为false表示这个事件是冒泡而不是捕获,once为false表示这个事件不会只监听一次,passive为 false表示这个事件是很普通的事件,浏览器的默认操作不会在另一个线程中进行。

展开listener:

  

里面还会展示事件将依次在哪些元素上冒泡触发。

 

监控元素上的事件命令: monitorEvents 和 unmonitorEvents

看名字就大概知道一个是监控事件,一个是取消监控事件。

那么同样监控一下那个精灵球:

monitorEvents(document.querySelector(".diggit"))

当我运行此命令行后,将鼠标再移动到精灵球上时,控制台很快输出了大量事件。

一般情况下,这并不是我们想要的,我们更多地时候可能只想要一两种事件。

那么我们先解除监控:

unmonitorEvents(document.querySelector(".diggit"))

然后可以只监控鼠标事件:

monitorEvents(document.querySelector(".diggit"),"mouse")

当然我们更常用的是只监控鼠标点击事件:

monitorEvents(document.querySelector(".diggit"),"click")

此时点击精灵球(你也点一下呗

现在我们可以更准确地获取到我们想要监控的事件信息了:

 所以说还是很有用的是吧,那么学到了的同时赶紧点击一下精灵球验证一下如何呢

posted on   韩子卢  阅读(9550)  评论(7编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义



点击右上角即可分享
微信分享提示
电磁波切换

目录