如何捕获被调用的Javascript函数?

时间:2010-10-07 15:43:49

标签: jquery firebug cognos

我正在使用COGNOS,这是一个非常令人沮丧的BI应用程序,它严重依赖于Javascript。基本上,当更改<select>框时,屏幕上的数据会被刷新,可能是通过AJAX函数或类似的东西。我想使用jQuery强制进行此更改,但我不确定如何拦截它正在进行的调用,以便我可以复制它。还有一公吨的JS代码,因此很难手工找到。

有没有办法使用Firebug来显示被调用的不同函数?我的方法是否正确?

4 个答案:

答案 0 :(得分:12)

如果您打开Firebug 脚本面板,左上角会出现一个看起来像电视遥控器上的暂停按钮的按钮:||。这告诉Firebug暂停运行的下一部分JavaScript。因此,我打开页面,确保已启用脚本面板,单击该按钮,然后更改select框。那个应该在Firebug中触发一个断点,之后你可以逐步完成代码来弄清楚什么时候被调用。

或者,如果您不介意使用其他工具,Google Chrome有一个内置的调试器和检查器,可以显示附加到元素的事件处理程序。因此,在Chrome中,如果您打开页面,请右键单击select框并选择检查元素,然后在右侧的底部应该有一个列表事件处理程序附加到它。这可能更容易使用。

最后,在任一工具中,如果您可以识别实际导致数据重新加载的内核中的代码位(例如,通过查找URL或XmlHTTPRequest实例,或jQuery的{{1} }},.ajax.post.get函数,如果它使用jquery),你可以在它上面放一个断点,然后触发select,然后查看调用堆栈(在两种工具中的右侧。)

祝你好运!

答案 1 :(得分:1)

可悲的是,在这一点上,您可能最好使用老式的警报框调试方法在Cognos中使用。 IBM已经表示,较新版本的Cognos可以在Firefox中运行,但IBM之前的代码非常以IE为中心,在新版本的IE中甚至不是特别好。您也可以在较新版本的IE中使用F12调试器功能,这有时很有用。我并不假装任何这个和Firebug一样好。

此外,关于您尝试调试的实际问题,如果在编辑报表时单击它,则Cognos中的select会有一个名为“Auto-submit”的参数。如果将其更改为“no”,则无需在jQuery中禁用该行为。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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