17

我正在寻找一种调试动态加载的 jQuery document.ready 函数的方法。

显然我不能只调出脚本面板并用鼠标添加断点,因为那里不存在该函数。

我也尝试添加“调试器;” 到函数(不带引号),但这没有做任何事情。我已确保在尝试此操作时实际执行了该功能。

谢谢你的帮助,

阿德里安

编辑:我刚刚注意到 Firebug 实际上在调试时中断。但是,当它对动态加载的脚本执行此操作时,它不会像往常一样显示该脚本的源代码。另外,调用堆栈在我自己的代码下方结束。我可以通过调用堆栈调出 document.ready 的实现,但这并没有真正的帮助。这是一个 Firebug 错误还是我错过了什么?

4

5 回答 5

17

我刚刚研究了这个类似的问题。解决方案包括两次添加单词调试器;一次位于外部文件的顶部,另一次位于需要调试的函数的顶部。

我注意到如果调试器词只使用一次,它就不起作用。例子:

//myExternal.js
debugger;
function myExternalFunction(){
 debugger;
 /* do something here */
}
于 2009-05-17T11:31:56.000 回答
0

您可以尝试在调用事件的位置放置一个断点,然后选择“Step Into”(F11)而不是单击“Play”。我面前没有测试用例,但我认为这可能有效。

于 2009-05-13T16:24:45.263 回答
0

刚刚在Firefox 5.0/Firebug 1.7.3中遇到了相同的行为(debugger;动态加载代码中的 Firebug 忽略语句)。

通过分离 Firebug 窗口(“在新窗口中打开 Firebug”)来解决。

于 2011-07-15T21:40:34.737 回答
0

我不知道你有没有想过这个,但万一其他人需要它......

我通过将要调试的代码移动到从主页链接的外部文件来解决这个问题。

就我而言,我使用 jQuery AJAX 让 default.aspx 将 services.aspx 加载到内容 div 中。反过来,Services.aspx 使用 AJAX 从提供数据的 Web 服务加载 jQuery UI 选项卡元素。Web 服务代码位于从 default.aspx 链接的名为 data.js 的文件中。我需要调试 services.aspx 标头中的代码(加载带有数据的选项卡),但在任何可用的检查器中都看不到它。我只是将我需要的代码移到 data.js 中的一个新函数中,并从 services.aspx 的标头中调用它。

我希望这对需要它的人有意义!

于 2010-07-31T11:42:59.303 回答
-2

IE JScript 调试器和 Safari 的 Web Inspector 也支持“调试器”关键字,所以如果 firebug 不支持它,我会感到惊讶。

基本上:

// mydynamicallyloadedfile.js
... // do stuff
debugger; // triggers debugger
... // more stuff

而且我希望萤火虫会在debugger关键字处中断

于 2009-05-13T21:06:47.770 回答