【问题标题】:How do I view events fired on an element in Chrome DevTools?如何查看 Chrome DevTools 中元素触发的事件?
【发布时间】:2012-04-30 02:51:33
【问题描述】:

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

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

【问题讨论】:

标签: javascript google-chrome-devtools


【解决方案1】:

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

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

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

【讨论】:

  • 在 2021 年尝试这个,我在尝试这种语法时只是在控制台输出中得到“未定义”。有任何想法吗?仍然无法找出如何查看哪些自定义 jQuery 事件附加到特定元素:(
【解决方案2】:

你可以使用monitorEvents函数。

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

monitorEvents($0)

现在,当您将鼠标移到该元素上、聚焦或单击它时,触发事件的名称将与其数据一起显示。

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

unmonitorEvents($0)

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

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

monitorEvents(document.body, 'mouse')

这个可用类型的列表是here

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

【讨论】:

  • 同意。这是监视和跟踪特定元素上的事件的事实上的方式。
  • 你是用什么工具来制作gif的
  • 您经常会遇到一个感觉像是升级的提示。这是其中之一。
  • @MariuszPawelski 如何从这里开始?我这样做并找到了单击事件,这是我感兴趣的事件。但是我如何找到单击元素时发生的情况?执行什么样的代码?我应该搜索MouseEvent 的哪个属性?
  • 但是在哪里可以找到处理程序,例如点击处理程序。
【解决方案3】:

Visual Event 是一个不错的小书签,可用于查看元素的事件处理程序。在线演示可以查看here

【讨论】:

    【解决方案4】:
    • F12 打开开发工具
    • 点击来源标签
    • 在右侧,向下滚动到“事件侦听器断点”,然后展开树
    • 单击您要收听的事件。
    • 与目标元素交互,如果它们触发,您将在调试器中获得一个断点

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

    【讨论】:

    • 如果你追求的是鼠标事件,这个解决方案是个问题,因为断点会杀死流程
    • 如果所有事件都指向我不关心的缩小 jquery,我如何到达使用该 jquery 的函数。
    • 它可以显示我创建的自定义事件吗?当我读到它改变了生活时,这是我想到的第一件事。我错过了什么吗?
    • @MuhammadUmer 您可以将 jQuery 黑盒化,以便 Chrome 跳过它并直接转到您的源代码。 developer.chrome.com/devtools/docs/blackboxing
    • 我检查了事件侦听器的框架侦听器,但仍然没有看到 Backbone 的事件侦听器。有什么想法吗?
    【解决方案5】:

    如果它是一个 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”

    【讨论】:

    • 那么,如何找到这些事件?
    • 在苏联 Chrome 中,这些事件会找到你
    猜你喜欢
    • 2021-09-25
    • 2014-10-15
    • 2019-07-30
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多