如何找出触发哪个元素的事件

时间:2014-06-20 14:53:16

标签: javascript jquery firefox firebug

是否有工具(或萤火虫中的某些东西)会告诉我刚刚解雇的事件,更重要的是它们绑定的元素是什么?

我有一些javascript“包含”,有些缩小,有些则没有。我正在经历一些我想要关闭的奇怪行为,但我无法找到导致它的原因。

我有一个表单显示在“弹出窗口”中,当我尝试单击其中一个输入框时,“弹出窗口”关闭,因此某个事件绑定某处导致了这一点。

问题是,我不知道这个虚假事件绑定到哪个元素。如果我点击弹出窗口内的任何地方(以及覆盖页面其余部分的背景掩码,但这是可以接受的),也会出现问题。

我正在使用firefox,因此我可以在控制台中输入任何内容。多个javascript文件中的eventys以各种方式完成,一些通过jquery,一些使用内联属性(例如onclick =“...”),一些只使用javascript。

我当然不想在每个javascript文件中为每个可能的事件添加一些代码。

我花了一个多小时试图追捕这个dom元素并且已经消除了明显的那些,比如包含弹出窗口和body标签的div。

1 个答案:

答案 0 :(得分:1)

可以使用Firebug中的Break On Mutate option跟踪DOM修改。可以通过单击HTML panel中的相关按钮(Break On Mutate button)来激活它。请注意,必须启用Script panel才能使其生效。

还有其他几个Break On ... features,可以帮助您在特定事件的代码中找到正确的位置。

此外,Firebug 2.0引入了Events side panel,它显示了绑定到 HTML 面板中所选元素的所有事件。如果使用类似jQuery的库,它甚至允许您调查由库函数包装的用户定义函数,以防您按照the answer to a related question中的描述启用 Show Wrapped Listeners 选项。 / p>