>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Подменить стили в загружаемой странице http://forum.mozilla-russia.org/viewtopic.php?id=40122 |
be@ver > 21-09-2009 19:11:18 |
В расширении есть browser, в который грузится страничка. Необходимо подменить стилевой файл (.css), подсунув стили из расширения. (необходимо что-бы страничка отрисовывалась с подмененными стилями.) зы. перечитал большую часть форума, кое что понял но для меня это пока заумно, если можно - маленький пример, как это сделать |
be@ver > 21-09-2009 20:58:29 |
Насколько я понимаю необходим сервис для перехвата запросов Выделить код Код:var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); потом инициализировать собственно перехват для нашего объекта mainBrowser какая функция будет обрабатывать эти перехваты? у нее определенное имя?? что-то типа Выделить код Код:mainBrowser.observe = function(object, string, data){ if(string = "http-on-modify-request"){ object.QueryInterface(Components.interfaces.nsIHttpChannel); /* и тут делаем свое "грязное" дело проверяем что это запрос css (как?) */ } } и как это все потом вернуть? |
be@ver > 27-09-2009 12:22:26 |
вот такая конструкция получилась Выделить код Код: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 алерта показывают разные значения, но моя таблица стилей не цепляется |