Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№121-09-2009 19:11:18

be@ver
Участник
 
Группа: Members
Зарегистрирован: 21-09-2009
Сообщений: 15
UA: Firefox 3.5

Подменить стили в загружаемой странице

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

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

Отсутствует

 

№221-09-2009 20:58:29

be@ver
Участник
 
Группа: Members
Зарегистрирован: 21-09-2009
Сообщений: 15
UA: Firefox 3.5

Re: Подменить стили в загружаемой странице

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

Выделить код

Код:

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/***

Отсутствует

 

№327-09-2009 12:22:26

be@ver
Участник
 
Группа: Members
Зарегистрирован: 21-09-2009
Сообщений: 15
UA: Firefox 3.5

Re: Подменить стили в загружаемой странице

вот такая конструкция получилась :)
запускается все под 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 алерта показывают разные значения, но моя таблица стилей не цепляется :(

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]