我正在使用 COGNOS,这是一个非常令人沮丧的 BI 应用程序,它严重依赖于 Javascript。基本上,当一个<select>
盒子被改变时,屏幕上的数据会被刷新,大概是通过 AJAX 函数或类似的东西。我想使用 jQuery 强制进行此更改,但我不确定如何拦截它正在进行的调用,以便我可以复制它。还有大量的 JS 代码,所以很难手动找到。
有没有办法使用 Firebug 来显示被调用的不同函数?我的方法正确吗?
如果您打开 Firebug脚本面板,左上方有一个按钮,看起来像电视遥控器上的暂停按钮:||
. 这告诉 Firebug 暂停下一段运行的 JavaScript。所以我会打开页面,确保脚本面板已启用,单击该按钮,然后更改select
框。这应该会在 Firebug 中触发一个断点,之后您可以单步执行代码以确定何时调用了什么。
或者,如果您不介意使用其他工具,Google Chrome有一个内置的调试器和检查器,可以显示附加到元素的事件处理程序。因此,在 Chrome 中,如果您打开页面,请右键单击该select
框并选择Inspect Element,然后在底部的右侧应该有一个附加到它的事件处理程序列表。这可能更容易使用。
最后,在任一工具中,如果您可以识别出实际导致数据重新加载的代码(通过查找 URL,例如,或XmlHTTPRequest
实例,或 jQuery 的.ajax
, .post
,.get
或.getJSON
函数,如果它使用 jquery),您可以在其上放置一个断点,然后触发选择,然后查看调用堆栈(在两个工具的右侧)。
祝你好运!
遗憾的是,此时,您可能最好在 Cognos 中使用老式的警告框调试方法。IBM 曾表示,较新版本的 Cognos 将在 Firefox 中运行,但 IBM 之前的代码非常以 IE 为中心,在新版本的 IE 中甚至不是特别好。您还可以在较新版本的 IE 中使用 F12 调试器功能,这有时很有用。我不假装这些都和 Firebug 一样好。
此外,关于您尝试调试的实际问题,Cognos 中的选择(如果您在编辑报告时单击它)有一个名为“Auto-submit”的参数。如果将其更改为“否”,则无需禁用 jQuery 中的行为。
如果您使用的是 Firefox + Firebug,您可以激活“net”选项卡并检查所有正在进行的 Ajax 调用。(在 XHR 按钮下查看)
在 Firefox 中选择 Element 并查看它的 onclick 事件是什么,或者它是否有 ID,然后在 JS 文件中搜索该 ID。