如何在Chrome DevTools中查看针对元素触发的事件?

Joh*_*man 554 javascript google-chrome-devtools

我在库的页面上有一个可自定义的表单元素.我希望看到当我与它交互时会触发哪些javascript事件,因为我试图找出要使用的事件处理程序.

如何使用Chrome Web Developer完成此操作?

Mat*_*att 827

  • 点击F12打开Dev Tools
  • 单击"源"选项卡
  • 在右侧,向下滚动到"Event Listener Breakpoints",然后展开树
  • 单击要收听的事件.
  • 与目标元素交互,如果它们触发,您将在调试器中获得一个断点

同样,你可以右键点击目标元素 - >选择"检查元素"向下滚动的开发框架的右侧,底部是"事件侦听器".展开树以查看附加到元素的事件.不确定这是否适用于通过冒泡处理的事件(我猜不是)

  • 如果所有事件都指向我不关心的缩小的jquery,我如何达到使用该jquery的函数. (66认同)
  • @MuhammadUmer你可以黑盒子jQuery,所以Chrome会跳过它并直接转到你的源代码.https://developer.chrome.com/devtools/docs/blackboxing (23认同)
  • 它能显示由我创建的自定义事件吗?当我读到它改变了生活时,这是我想到的第一件事.我错过了什么吗? (13认同)
  • 如果是你所追踪的鼠标事件,这个解决方案就会出现问题,因为断点会导致流程死亡 (9认同)

Mar*_*ski 774

您可以使用monitorEvents函数.

只需检查您的元素(right mouse clickInspect在可见元素上或转到ElementsChrome开发者工具中的标签并选择想要的元素)然后转到Console选项卡并写入:

monitorEvents($0)
Run Code Online (Sandbox Code Playgroud)

现在,当您将鼠标移到此元素上,焦点或单击它时,将显示已触发事件的名称及其数据.

要停止获取此数据,只需将其写入控制台:

unmonitorEvents($0)
Run Code Online (Sandbox Code Playgroud)

$0只是Chrome开发者工具选择的最后一个DOM元素.您可以在那里传递任何其他DOM对象(例如,getElementById或的结果querySelector).

您还可以将事件"type"指定为第二个参数,以将受监视事件缩小到某个预定义集.例如:

monitorEvents(document.body, 'mouse')
Run Code Online (Sandbox Code Playgroud)

这可用类型的列表是在这里.

我做了一个小gif,说明了这个功能是如何工作的:

monitorEvents函数的用法

  • 这个答案要好得多,并且完全符合要求(也许这个功能在2012年没有提供) (32认同)
  • 你时常会遇到一个感觉像是升级的提示。这是其中之一。 (15认同)
  • 这应该是新接受的答案 (5认同)
  • 同意.这是监视和跟踪*特定*元素上的事件的事实方法. (2认同)
  • @MSC我在最新的Chrome上查了一下,我还在工作 (2认同)
  • 有没有办法在页面加载时使用? (2认同)
  • 你用什么工具制作gif (2认同)
  • @MariuszPawelski如何从这里开始?我做了这个并发现了click事件,这是我感兴趣的事件.但是如何找到点击元素时会发生什么?什么样的代码被执行?我应该搜索"MouseEvent"的哪个属性? (2认同)
  • 但在哪里找到处理程序,例如点击处理程 (2认同)
  • @SheikhAbdulWahid 和任何寻找点击处理程序的人,当您检查元素时,您可以看到元素选项卡以及显示元素样式的部分。样式旁边是“事件监听器”选项卡。https://umaar.com/dev-tips/24-view-event-listeners/ (2认同)

小智 26

Visual Event是一个很好的小书签,可用于查看元素的事件处理程序.在线演示可以在这里查看.


Dan*_*ski 19

对于jQuery(至少版本1.11.2),以下过程适用于我.

  1. 右键单击元素并打开"Chrome Developer Tools"
  2. 键入$._data(($0), 'events');在"控制台"
  3. 展开附加的对象,然后双击该handler:值.
  4. 这显示了附加功能的源代码,使用"搜索"选项卡搜索其中的一部分.

现在是时候停止重新发明轮子并开始使用vanilla JS事件...... :)

如何找到的,jQuery的点击处理功能

  • 在 2021 年尝试此语法时,我只是在控制台输出中得到“未定义”。有任何想法吗?仍然不知道如何查看哪些自定义 jQuery 事件附加到特定元素:( (8认同)

air*_*nix 15

如果它是一个jquery插件,这不会显示脚本可能创建的自定义事件.例如 :

jQuery(function($){
 var ThingName="Something";

 $("body a").live('click', function(Event){
   var $this = $(Event.target);
       $this.trigger(ThingName + ":custom-event-one");
 });

 $.on(ThingName + ":custom-event-one", function(Event){
   console.log(ThingName, "Fired Custom Event: 1", Event);
 })

});
Run Code Online (Sandbox Code Playgroud)

Chrome开发人员工具中Scripts下的事件面板不会显示"Something:custom-event-one"

  • 然后,如何才能找到这些事件? (17认同)
  • 在苏联 Chrome 中,这些事件会找到你 (5认同)