2

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

有谁知道出了什么问题?

4

1 回答 1

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
    }
}
于 2011-04-25T21:31:07.023 回答