javascript - 在没有回调的情况下确定何时发出 XMLHttpRequest 请求

标签 javascript jquery ajax callback

我正在尝试在 JavaScript 中重载 XMLHttpRequest.* 方法,以便网页可以在不使用任何侵入式回调的情况下确定是否发生了 Ajax 请求。现在,在使用大多数 JS 框架时,类似这样的东西工作得很好:

XMLHttpRequest.prototype.getResponseHeader = function() {
 alert('O hai, looks like you made an AJAX request.');
}

但是,有两个问题:

  • getResponseHeader 不能再用作getResponseHeader
  • 它不适用于简单的 AJAX 示例。即 xmlhttp.open("GET","simple.html",false);

JS 是否有任何方式可以镜像 XMLHttpRequest.open() 或者我可以将某些内容链接到它的任何方式。我已经尝试了一百万种范例(工厂、克隆、包装——大多数导致无限递归),但似乎没有任何效果。也许这是不可能的。有什么想法吗?

最佳答案

您可以在覆盖方法之前在某个变量中保留对原始变量的引用,然后在您覆盖的函数中调用该变量:

var temp = XMLHttpRequest.getResponseHeader;
XMLHttpRequest.getResponseHeader = function() { temp.apply(this, arguments); };

这应该可以让您在不覆盖原始功能提供的功能的情况下跟踪使用情况。

关于javascript - 在没有回调的情况下确定何时发出 XMLHttpRequest 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2255248/

相关文章:

javascript - 获取字符串Jquery中标签中包含的字符串

javascript - 为什么无法从另一个脚本文件访问 JavaScript 函数?

javascript - 更改 h3 标签内容

javascript - 选择更改后 Jquery 删除行成功 Ajax 调用

javascript - 如何确定文件是否下载成功

java - 使用 dojo ajax 填充下拉列表

javascript - 在 forEach 中使用条件语句时,如何检测每个 child 是否都未满足条件?

javascript - jQuery `click` 、 `bind` 、 `live` 、 `delegate` 、 `trigger` 和 `on` 函数之间的区别(举例)?

javascript - 通过单个 Ajax 调用向 Spring Boot 提交多个表单

jquery - 顶部导航栏的下拉菜单隐藏在第二个导航栏后面