浏览器是否有某种方式来定位打开的请求?
我有一个调用一些请求的插件,它不公开 XMLHttpRequest/jqXHR 对象;但是,Firebug 确实在控制台中显示了这些请求的操作。
有没有办法为打开的请求引用对象?最终目标是中止现有的。
浏览器是否有某种方式来定位打开的请求?
我有一个调用一些请求的插件,它不公开 XMLHttpRequest/jqXHR 对象;但是,Firebug 确实在控制台中显示了这些请求的操作。
有没有办法为打开的请求引用对象?最终目标是中止现有的。
我相信 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();