Переопределить XMLHTTPRequest в overlay.js в дополнении Mozilla Firefox - PullRequest
2 голосов
/ 11 апреля 2011

Я создаю расширение 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 Ответ

1 голос
/ 26 апреля 2011

Мне удалось получить информацию другим способом.После перехвата 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
    }
}
...