我正在构建一个firefox扩展,并希望为每个加载的页面更改XMLHTTPRequest对象的行为。
我发现以下代码可以解决这个问题:
appcontent.addEventListener("load", function(event){
var original_xhr = XMLHttpRequest;
XMLHttpRequest = function () {
original_xhr();
alert ("I redefined this function");
}
alert ("Page loading");
} , true)
我已将这段代码添加到我的overlay.js文件中。由于显示“页面加载”警报,因此加载事件正常工作。但XMLHTTPRequest不会被覆盖。
有谁知道什么是错的?
答案 0 :(得分:1)
我设法通过另一种方式获取信息。在拦截了httpchannel后,我使用了以下代码来查看请求是否来自xhr请求:
try
{
var callbacks = httpChannel.notificationCallbacks;
if (callbacks) {
var xhrInterface = callbacks.getInterface(Components.interfaces.nsIXMLHttpRequest);
// XHR REQUEST
}
}
catch (exc)
{
if (exc.name == "NS_NOINTERFACE") {
// NO XHR REQUEST
}
}