在Mozilla Firefox Add-on中重新定义overlay.js中的XMLHTTPRequest

时间:2011-04-11 11:53:59

标签: firefox-addon mozilla xmlhttprequest redefine

我正在构建一个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不会被覆盖。

有谁知道什么是错的?

1 个答案:

答案 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
    }
}