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 に答える