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

我正在尝试在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); }; 

这应该让您跟踪使用而不会覆盖原始函数提供的function。

XmlHttp将是一个真正的问题,它是一个COM对象,不支持你想要使用的那种原型操作。 更糟糕的是JQuery避免了IE中的XmlHttpRequest ,即使它可用它而不是使用XmlHttp。