代码之家  ›  专栏  ›  技术社区  ›  Nic

如何捕获正在调用的javascript函数?

  •  7
  • Nic  · 技术社区  · 14 年前

    我正在使用Cognos,这是一个非常令人沮丧的BI应用程序,它严重依赖于JavaScript。基本上,当 <select> 框被更改,屏幕上的数据被刷新,可能是由Ajax函数或类似的东西。我想使用jquery强制进行此更改,但我不确定如何截获它正在进行的调用,以便复制它。还有大量的JS代码,所以很难用手找到。

    有没有一种方法可以使用firebug显示正在调用的不同函数?我的方法正确吗?

    4 回复  |  直到 14 年前
        1
  •  12
  •   T.J. Crowder    14 年前

    如果你打开火虫 脚本 面板,左上角有一个按钮,看起来像电视遥控器上的暂停按钮: || . 这告诉Firebug在运行的下一位javascript上暂停。所以我会打开页面,确保 脚本 面板已启用,单击该按钮,然后更改 select 盒子。那 应该 在Firebug中触发一个断点,之后您可以单步执行代码,以确定何时调用什么。

    或者,如果你不介意使用不同的工具, Google Chrome 具有内置的调试器和检查器,可以向您显示附加到元素的事件处理程序。所以在chrome中,如果您打开页面,右键单击 选择 盒子与选择 检查元素 ,然后在右下方应该有一个事件处理程序列表。这可能更容易处理。

    最后,在这两种工具中,如果您能够识别实际导致数据重新加载的内部代码位(例如,通过查找URL或 XmlHTTPRequest 实例或jquery的 .ajax , .post , .get .getJSON 函数(如果它使用jquery),则可以在其上放置断点,然后触发select,然后查看调用堆栈(在两个工具的右侧)。

    祝你好运!

        2
  •  1
  •   rossdavidh    14 年前

    遗憾的是,此时,您最好使用老式的调试警报框方法在Cognos中进行调试。IBM曾说过,Cognos的新版本可以在Firefox中使用,但IBM之前的代码非常以IE为中心,在新版本的IE中甚至不太好。您也可以在新版本的IE中使用F12调试器功能,这有时很有用。我不想假装这一切都和火虫一样好。

    此外,对于您试图调试的实际问题,如果在编辑报告时单击Cognos中的select,它有一个名为“auto submit”的参数。如果将其更改为“否”,则无需禁用jquery中的行为。

        3
  •  0
  •   Diodeus - James MacFarlane    14 年前

    如果您使用的是firefox+firebug,那么您可以激活“net”选项卡并检查正在进行的所有Ajax调用。(查看xhr按钮下)

        4
  •  0
  •   Doug Molineux    14 年前

    在firefox中选择元素,查看它的onclick事件是什么,或者它是否有ID,然后在JS文件中搜索该ID。