В расширении есть browser, в который грузится страничка. Необходимо подменить стилевой файл (.css), подсунув стили из расширения. (необходимо что-бы страничка отрисовывалась с подмененными стилями.)

зы. перечитал большую часть форума, кое что понял :) но для меня это пока заумно, если можно - маленький пример, как это сделать

Насколько я понимаю необходим сервис для перехвата запросов

Выделить код

Код:

var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);

потом инициализировать собственно перехват для нашего объекта mainBrowser

Выделить код

Код:

observerService.addObserver(mainBrowser, "http-on-modify-request",   false);

какая функция будет обрабатывать эти перехваты? у нее определенное имя?? что-то типа

Выделить код

Код:

mainBrowser.observe = function(object, string, data){
if(string = "http-on-modify-request"){
object.QueryInterface(Components.interfaces.nsIHttpChannel);
/*
и тут делаем свое "грязное" дело
проверяем что это запрос css (как?)

*/
}
}

и как это все потом вернуть?
опять Components.classes["@mozilla.org/***

вот такая конструкция получилась :)
запускается все под XULRunner

Выделить код

Код:

browser.addEventListener("DOMContentLoaded", startBrowser, true);

function startBrowser(){
    contentBrowser = browser.contentDocument;
    alert("1: " + contentBrowser.getElementsByTagName('link')[0].href);
    contentBrowser.getElementsByTagName('link')[0].href = "";
    alert("2: " + contentBrowser.getElementsByTagName('link')[0].href);
    contentBrowser.getElementsByTagName('link')[0].href = "chrome://TestBrowser/content/style.css";
    alert("3: " + contentBrowser.getElementsByTagName('link')[0].href);
    contentBrowser.getElementsByTagName('link')[0].href = "file:///home/username/prj/project/testbrowser/chrome/content/style.css";
    alert("4: " + contentBrowser.getElementsByTagName('link')[0].href);
}

все 4 алерта показывают разные значения, но моя таблица стилей не цепляется :(