我正在尝试在JavaScript中重载XMLHttpRequest。*方法,以便网页可以确定是否在不使用任何侵入式回调的情况下发生了Ajax请求。现在,使用大多数JS框架时,这样的工作相对较好:
XMLHttpRequest.prototype.getResponseHeader = function() {
alert('O hai, looks like you made an AJAX request.');
}
然而,有两个捕获:
xmlhttp.open("GET","simple.html",false);
JS有没有办法镜像XMLHttpRequest.open()
或任何可以链接到它的方式。我已经尝试了一百万个范例(工厂,克隆,包装 - 最多导致无限递归),似乎没有任何工作。也许这是不可能的。有什么想法吗?
答案 0 :(得分:2)
在重写方法之前,您可以在某个变量中保留对原始的引用,然后在您覆盖的函数中调用该变量:
var temp = XMLHttpRequest.getResponseHeader;
XMLHttpRequest.getResponseHeader = function() { temp.apply(this, arguments); };
这可以让您跟踪使用而不会覆盖原始函数提供的功能。
答案 1 :(得分:0)
XmlHttp将是一个真正的问题,它是一个COM对象,不支持你想要使用的那种原型操作。更糟糕的是JQuery避免了IE中的XmlHttpRequest
,即使它可用它而不是使用XmlHttp。