#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
}
}