【问题标题】:Find who fired/triggered the event (Origin of triggered event)查找谁触发/触发了事件(触发事件的起源)
【发布时间】:2020-09-24 18:48:46
【问题描述】:

我想知道是否有办法找到触发事件的位置,我有一个使用多个 JavaScript 库的表单,特别是在不希望的情况下触发了提交。我想找到那个事件的起源。有没有办法添加一个监听器,它在触发特定类型的事件时记录事件的起源。

类似这样的或者可能是其他的:

el.addEventListener('click', e => {
        console.log(e.getOrigin)
});

编辑:

只是为了说清楚,我知道 e.target 是什么,不,这不是我要找的

e.target 给出了触发该事件的元素,我正在寻找的是 - 如果事件是从一个函数触发的,我想知道哪个函数触发了它。

【问题讨论】:

  • event.target(或e.target 用于您的代码)给出了触发事件的元素,这是您想要的吗? “起源”是什么意思?
  • 不,e.target 给出了触发该事件的元素,我正在寻找的是 - 如果事件是从一个函数触发的,我想知道哪个函数触发了它。
  • @AmitPandey 事件由函数触发是什么意思?函数如何触发事件?
  • 我有一些库,可以为我的元素添加手动事件触发器,例如 jQuery 中的 element.dispatchEvent('click') 或 trigger() 。我想发现如果触发了点击事件,它是哪个函数或哪段代码,例如来自函数 x 或函数 y。

标签: javascript dom


【解决方案1】:

console.log(e.getOrigin) 替换,e.getOrigine.target

【讨论】:

    【解决方案2】:

    您已经获得了正确的结构,但您需要使用e.target 而不是e.getOrigin。来自MDN docs

    Event 接口的 target 属性是对被调度事件的对象的引用

    在您的示例中,使用click 事件,这将返回用户单击的元素。希望这是您所期望的行为?

    【讨论】:

      【解决方案3】:

      这不是你会在语言中找到的东西。如果你只是想调试一个特定的情况,你可以考虑使用 jQuery audit (这在 chrome 网上商店已经没有了,但是如果你真的想要的话,你可以从repo获取它),或者在你的开发工具的Sources选项卡中设置一个event listener breakpoint

      以编程方式,您无能为力,除非您修改现有库。

      【讨论】:

      • 我会试试这个 Jquery 审计,谢谢。断点对于这个特定问题没有用处。
      猜你喜欢
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多