如何查看Chrome DevTools中某个元素上触发的事件?


603

我从库的页面上有一个可自定义的表单元素。我想查看与之交互时触发了哪些javascript事件,因为我试图找出要使用的事件处理程序。

如何使用Chrome Web Developer做到这一点?


13
这个书签可以对您有所帮助:sprymedia.co.uk/article/Visual+Event+2
scytale

1
这里的答案很有价值,但是上面^的书签实际上是解决了我的问题的方法。sprymedia.co.uk/article/Visual+Event+2
Jazzy

Answers:


876
  • 点击F12打开开发工具
  • 点击来源标签
  • 在右侧,向下滚动到“事件侦听器断点”,然后展开树
  • 单击您想听的事件。
  • 与目标元素进行交互,如果它们触发,您将在调试器中得到一个断点

同样,您可以右键单击目标元素->选择“检查元素”。在开发框架的右侧向下滚动,底部是“事件侦听器”。展开树以查看将哪些事件附加到元素。不知道这是否适用于通过冒泡处理的事件(我猜不是)


11
如果您要处理鼠标事件,那么此解决方案就是一个问题,因为断点会杀死流
WendyG 2014年

67
如果所有事件都指向我不关心的缩小的jQuery,该怎么办?如何到达使用该jQuery的函数?
Muhammad Umer

14
它可以显示我创建的自定义事件吗?当我读到它改变了生活时,这是我首先想到的。我想念什么吗?
特贝2014年

24
@MuhammadUmer您可以将jQuery涂黑,以便Chrome跳过它,直接进入源代码。developer.chrome.com/devtools/docs/blackboxing
Matt Zeunert

1
@MuhammadUmer如果您只是停止使用JQuery怎么办?
John Balvin Arias

831

您可以使用monitorEvents函数。

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

monitorEvents($0)

现在,当您将鼠标移到该元素上,进行焦点或单击时,将触发事件的名称及其数据。

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

unmonitorEvents($0)

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

您还可以将事件“类型”指定为第二个参数,以将监视的​​事件缩小到某个预定义的集合。例如:

monitorEvents(document.body, 'mouse')

此可用类型的列表在这里

我做了一个小gif,说明了此功能的工作原理:

monitorEvents函数的用法


2
同意 这是监视和跟踪特定元素上的事件的实际方法。
dmackerman 2015年

1
嗯,我明白了。正是“不确定”让我失望了,但是现在我看到您在有用的动画GIF中具有相同的含义。谢谢。
MSC

1
您使用了哪种工具制作gif
JerryGoyal,2015年

3
@MariuszPawelski如何从这里开始?我这样做后发现了click事件,这是我感兴趣的事件。但是,当我单击该元素时,如何找到会发生什么呢?什么样的代码被执行?MouseEvent我应该搜索哪个属性?
Utku

3
但是在哪里可以找到处理程序,例如单击处理程序。
谢赫·阿卜杜勒·瓦希德


22

对于jQuery(至少是1.11.2版),以下过程对我有用。

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

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

如何找到jquery单击处理程序功能


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);
 })

});

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


21
那如何找到这些事件呢?
Calydon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.