假设我的页面上有一个链接:
<a href="#" id="foo">Click Here</a>
我什么都不知道,但是当我点击链接时,会显示一个警告(“栏”)。 所以我知道在某个地方,一些代码被绑定到#foo。
如何找到将警报(“bar”)绑定到click事件的代码? 我正在寻找Chrome的解决方案。
Ps。:这个例子是虚构的,所以我不是在寻找像这样的解决方案:“使用XXXXXX并在整个项目中搜索”alert(\“bar \”)“。我想要一个真正的调试/跟踪解决方案。
答案 0 :(得分:124)
使用 Chrome 15.0.865.0 dev 。 “元素”面板上有一个“事件监听器”部分:
“脚本”面板上的“事件监听器断点”。使用鼠标 - &gt;单击断点然后“进入下一个函数调用”,同时密切关注调用堆栈以查看userland函数处理事件。理想情况下,您可以使用未经编译的jQuery替换缩小版本的jQuery,这样您就不必一直单步执行,并在可能的情况下使用跳过。
答案 1 :(得分:41)
您还可以使用Chrome的检查程序以其他方式查找附加事件,如下所示:
这将带您到定义处理程序的位置,如下图所示,并由Paul Irish在此解释:https://groups.google.com/forum/#!topic/google-chrome-developer-tools/NTcIS15uigA
答案 2 :(得分:15)
在安装后按照以下步骤尝试jQuery Audit扩展(https://chrome.google.com/webstore/detail/jquery-audit/dhhnpbajdcgdmbbcoakfhmfgmemlncjg):
答案 3 :(得分:7)
对于版本 Chrome版本71.0.3578.98 (最新截至2019年):
选择要检查的元素
选择“事件监听器”选项卡
确保检查Framework侦听器以显示真实的javascript文件而不是jquery函数。
答案 4 :(得分:5)
编辑 :代替我自己的答案,这个非常优秀:How to debug JavaScript/jQuery event bindings with Firebug (or similar tool)
Google Chromes开发人员工具在脚本部分内置了搜索功能
如果您不熟悉此工具:(以防万一)
快速搜索#ID最终会带您进入绑定功能。
例如:搜索#foo
会将您带到
$('#foo').click(function(){ alert('bar'); })
答案 5 :(得分:3)
findEventHandlers是一个jquery插件,原始代码在这里:https://raw.githubusercontent.com/ruidfigueiredo/findHandlersJS/master/findEventHandlers.js
<强>步骤强>
将原始代码直接粘贴到chrome的控制台中(注意:必须已加载jquery)
使用以下函数调用:findEventHandlers(eventType, selector);
找到相应的选择器指定元素的eventType处理程序。
示例强>:
findEventHandlers("click", "#clickThis");
然后,如果有的话,可用的事件处理程序将显示如下,您需要展开才能找到处理程序,右键单击该函数并选择show function definition
请参阅:https://blinkingcaret.wordpress.com/2014/01/17/quickly-finding-and-debugging-jquery-event-handlers/
答案 6 :(得分:3)
2018年更新-可能对未来的读者有所帮助:
我不确定这是最初在Chrome中引入的。但是现在可以在Chrome中完成此操作的另一种(简便)方法是通过控制台命令。
例如(在Chrome控制台类型中为 )
getEventListeners($0)
$ 0 是DOM中的选定元素。
https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#0_-_4
答案 7 :(得分:2)
对于Chrome版本52.0.2743.116:
在Chrome的开发人员工具中,点击Ctrl
+ Shift
+ F
打开“搜索”面板。
输入您要查找的元素的名称。
绑定元素的结果应显示在面板中,并说明它们所在的文件。