使用Firebug调试JavaScript事件

我需要为某个事件设置断点,但我不知道,它在哪里定义,因为我有一大堆最小化的JavaScript代码,所以我无法手动找到它。

是否有可能以某种方式设置断点,例如具有ID registerButton的元素的click事件,或者找到哪个函数绑定到该事件?

我找到了Firefox附加的Javascript Deobfuscator ,它显示了当前执行的JavaScript,这很好,但我需要调试的代码是使用jQuery ,因此即使在最简单的事件上也有大量的函数调用,所以我不能使用它无论是。

是否有专门为jQuery制作的调试器?

有没有人知道一些工具将缩小的JavaScript重新转换为格式化代码,如turn function(){alert("aaa");v=3;}返回

 function() { alert("aaa"); v = 3; } 

那么它可能比它的价值太麻烦,但看起来你有三件事要做:

  1. 减少来源。 我喜欢这个快速而肮脏的在线工具 。 只需粘贴代码并单击按钮即可。 从来没有让我失望,即使是最时髦的JavaScript。

  2. 所有 jQuery事件绑定器都被路由到"jQuery.event.add" ( 这是在未构建的源代码中的样子 ),因此您需要找到该方法并在那里设置断点。

  3. 如果你已达到这个目的,你需要做的就是检查断点处的callstack,看看谁叫什么。 请注意,由于您位于库中的内部位置,因此需要检查一些跳转(因为调用"jQuery.event.add"的代码很可能只是其他jQuery函数)。

注意3)需要Firebug用于FF3。 如果您像我一样并且更喜欢使用Firebug for FF2进行调试,则可以使用古老的arguments.callee.caller.toString()方法来检查callstack,根据需要插入尽可能多的".caller ”。


编辑 :另请参阅“如何使用FireBug(或类似工具)调试Javascript / jQuery事件绑定” 。

你可以逃脱:

 // inspect var clickEvents = jQuery.data($('#foo').get(0), "events").click; jQuery.each(clickEvents, function(key, value) { alert(value) // alerts function body }) 

上面的技巧将让你看到你的事件处理代码,你可以开始在源代码中搜索它,而不是尝试在jQuery的源代码中设置断点。

首先替换缩小的jquery或您使用格式化的任何其他来源。 我发现的另一个有用的技巧是在firebug中使用分析器。 探查器显示正在执行的function,您可以单击一个并转到那里设置断点。

只是一个更新:

谷歌浏览器 (其中的开发工具 )支持各种断点,以及突破事件

所有事件以及设备方向更改和计时器

您可以看到一个video,其中包含Google IO的所有function。

还有内置的deminifier / unminimizer / prettifier ,它可以帮助你在压缩的javascript文件上手动设置断点。

你能做的就是获得缩小的代码 – 你可以访问它。 根据Crescent Fresh(1)选项或您喜欢的任何方法缩小代码。

然后下载并安装Fiddler – 所有Web开发人员都应该安装这个令人难以置信的工具。

然后使用Fiddler,您可以使用本地驱动器上的本地unminified.js拦截浏览器对minified.js文件的调用。

Fiddler基本上拦截了浏览器对特定文件的请求,并可以向浏览器提供不同的文件。 因此,您现在可以查看未缩小的代码。

简单。

另一个选择是使用Firefox并安装Venkman调试器 – 远比Firebug恕我直言 – 并且Venkman调试器有一个“漂亮的打印”选项,可以在运行时直观地缩小缩小的代码。 现在就把你的断点贴在你想要的地方……

另一个更新:现在有一个firebug扩展来美化JavaScript:

https://addons.mozilla.org/en-US/firefox/addon/javascript-deminifier/

它在Firefox 12.0中非常适合我。

相信这个答案可以发现它。

您可以在javascript文件中的任何位置使用debugger命令。 当解释器达到该声明时,如果调试器可用(如Firebug),则会触发它

找到该行并放置一个断点。 然后重新加载站点/页面。 然后,当遇到断点时,firebug将自动暂停执行语句。