1

浏览器是否有某种方式来定位打开的请求?

我有一个调用一些请求的插件,它不公开 XMLHttpRequest/jqXHR 对象;但是,Firebug 确实在控制台中显示了这些请求的操作。

有没有办法为打开的请求引用对象?最终目标是中止现有的。

4

1 回答 1

1

我相信 FF 扩展比在页面上下文中运行的代码具有更多的功能,这就是它可以检测请求的原因。据我所知,如果您没有保留对 XMLHttpRequest 对象实例的任何引用,则没有本地方法可以检索它。

但是,JavaScript 是一种灵活的语言,您可以轻松创建一个拦截器来跟踪所有打开的调用。

注意:如果可能,最好挂钩插件方法。

例如

XMLHttpRequest.prototype.send = (function (nativeSendFn) {
    return function () {
        var sendHandler = this.constructor.onSend;
        nativeSendFn.apply(this, arguments);

        sendHandler && sendHandler(this, arguments);
    };
})(XMLHttpRequest.prototype.send);

XMLHttpRequest.onSend = function (xhr, args) {
    console.log('request ', xhr);
    console.log('arguments ', args);
};

var req = new XMLHttpRequest();

req.open('GET', 'http://www.stackoverflow.com', true);
req.send();
于 2013-10-25T20:48:20.227 回答