javascript - 如何查看ajax调用完成后将执行的所有方法?

标签 javascript ajax events xmlhttprequest dom-events

假设我有一个由我无法控制的页面创建的 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/

相关文章:

javascript - 页面加载时自动加载灯箱

javascript - 具有 jinja 渲染功能的 Flask 应用程序;不自动刷新网页

ajax - 我应该显示我的 Ajax 驱动的 GWT 站点的单独版本来搜索机器人吗?

python - 使用异常跳出 while 循环

excel - 有没有办法在打开具有相似文件名的 Excel 文件时自动运行宏?

javascript - 是否可以在 JavaScript 中访问事件队列?

javascript - react 原生 map : How to follow user location on button press

javascript - 更改浏览器 URL 时是否有 Javascript keydown 限制?

jquery - Windows 7 侧边栏小工具,未获取 Ajax 调用的结果

jquery - 使用 jQuery 发送 POST;服务器认为 GET