【问题标题】:Making Firebug break inside dynamically loaded javascript使 Firebug 在动态加载的 javascript 中中断
【发布时间】:2009-05-13 15:55:21
【问题描述】:

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

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

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

感谢您的帮助,

阿德里安

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

【问题讨论】:

  • 您是否在 Firebug 中为加载页面的域启用了调试(控制台面板)?
  • 是的,我有。在我首先加载的页面上调试脚本也没有问题,并且该页面位于同一个域中。我刚刚尝试了“调试器”;那里的声明,它工作正常。因此,“调试器”语句似乎不适用于动态加载的脚本。

标签: javascript jquery firebug


【解决方案1】:

我刚刚处理了这个similar question。解决方案包括两次添加单词调试器;一次位于外部文件的顶部,另一次位于需要调试的函数的顶部。

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

//myExternal.js
debugger;
function myExternalFunction(){
 debugger;
 /* do something here */
}

【讨论】:

  • 更新:谢天谢地,这个错误已经在 Firebug 中修复了很久。我已经很久不用这个技巧了……
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

    • 是的,效果很好。在我的情况下,代码是由服务器动态生成的,但取决于同一 Web 请求中的其他数据。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

      基本上:

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

      我希望 firebug 在debugger 关键字处中断

      【讨论】:

      • 谢谢,但正如我所说,我已经尝试过调试器语句,虽然它通常可以正常工作,但在这种情况下它不起作用(我的问题中的详细信息)。
      猜你喜欢
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 2012-06-08
      • 2012-12-01
      相关资源
      最近更新 更多