假设我有一个由我无法控制的页面创建的 ajax 调用。
页面本身创建一个请求,获取响应并继续其工作。该页面的代码都不是我的代码。
如何查看哪些方法将作为该请求的回调执行?
换句话说,我如何知道页面将如何处理响应?
重要:我需要能够对多个不同的调用执行此操作,因此我希望“以编程方式”了解这一点。
<小时/>是否有一种简单的方法来列出分配给事件的所有处理程序?
例如,获取“onreadystatechange
”事件并找出分配给它的监听器?
最佳答案
在 Chrome 中,找到触发 AJAX 的代码
- 使用 Chrome 的网络标签。
- 让 AJAX 触发,然后查找类型为“xhr”的相应行。
- 然后查看同一行的发起者并将鼠标悬停在文本上。它应该显示堆栈跟踪的工具提示,并在最顶部显示请求之前的最新代码。
- 单击最顶部的条目。它应该将您带到“Sources”选项卡,其中包含启动 AJAX 的代码。回调应该在附近的某个地方。
- 如果您知道跟踪中的条目是一个库,请单击跟踪中看起来不像库的某个内容。
- 如果您碰巧遇到精简代码,Chrome 有一个格式化程序。它是左下角的“大括号”图标 (
{}
)。进一步遇到格式化文件将显示它已格式化。
成功 AJAX 后跟踪代码
- 在源上,在回调所在位置添加断点。
- 再次运行 AJAX,完成后浏览器将在该断点处停止。
- 然后使用 F10 单步执行代码。使用 F11 进入函数内部。
Chrome:https://developer.chrome.com/devtools/docs/javascript-debugging
火狐:https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Set_a_breakpoint
I need to be able to do that for several different calls, so I wish to know that "programmatically".
只有当您有权访问(您的代码可以 Hook 或在范围内)操作中调用的任何函数(覆盖请求的操作方式,或覆盖回调序列中的某些内容)时,这才是可能的。如果 AJAX恰好使用 jQuery,请关注 this answer 使用 AJAX Hook 。
关于javascript - 如何查看ajax调用完成后将执行的所有方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555208/