我正在尝试在 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/