Переопределите XMLHttpRequest в overlay.js в надстройке Mozilla Firefox

#firefox-addon #mozilla #xmlhttprequest #redefine

#firefox-аддон #mozilla #xmlhttprequest #переопределите

Вопрос:

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

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