Javascript 拦截所有ajax请求-糟糕的做法?

Javascript 拦截所有ajax请求-糟糕的做法?,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,显示了监视和拦截所有ajax请求的方法: XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function(value) { this.addEventListener("progress", function(){ console.log("Loading"); }, false); this.realSe

显示了监视和拦截所有ajax请求的方法:

XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(value) {
    this.addEventListener("progress", function(){
        console.log("Loading");
    }, false);
    this.realSend(value);
};

简洁明了,不需要jQuery或类似的工具。我看不出这有什么不对,但我的直觉告诉我,像这样钩住XMLHttpRequest是危险的。这是应该避免的,还是可以使用?

因为这实际上并没有改变功能,而且它调用了原始方法,所以我不得不同意,是的,它可以安全使用。忽略一些旧浏览器不支持addEventListener或XMLHttpRequest.Danger的事实-是的,如果您在其中出错,那么它会破坏一切,而不仅仅是您的代码。好的-如果你知道你在做什么,那就说是的。不过,如果您能让所有组件都使用包装器,那么最好使用包装器。@Bergi:您能详细说明一下包装器的含义吗?不要覆盖本机的
.send
方法。将截取的一个方法公开为不同的方法,或者将其放在不同的对象上(委托其他方法调用;有效地作为对象)。当然,这可能是最好的。不幸的是,在我正在工作的情况下,我无法控制网站的其余部分。我需要监控页面上发生的事情,但我没有找到任何适合我收听的事件。