Как внедрить CSS, расположенный на / skin? - PullRequest
3 голосов
/ 29 августа 2010

Я хочу добавить файл css, расположенный в папке скина на странице браузера.

Он расположен на chrome://orkutmanager/skin/om.css, при доступе вручную отображать содержимое файла правильно.

I 've пробовал это , но оно не работает ... Чего мне не хватает, или это невозможно?

Ответы [ 3 ]

2 голосов
/ 12 сентября 2010

Вы также можете использовать nsIStyleSheetService:

loadCSS: function() {
     var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
                .getService(Components.interfaces.nsIStyleSheetService);
     var ios = Components.classes["@mozilla.org/network/io-service;1"]
                .getService(Components.interfaces.nsIIOService);
     var uri = ios.newURI("chrome://addon/skin/style.css", null, null);

     if(!sss.sheetRegistered(uri, sss.USER_SHEET))
         sss.loadAndRegisterSheet(uri, sss.USER_SHEET);
}

Если вы используете USER_SHEET, собственные правила CSS веб-сайта имеют более высокий приоритет, чем ваши. Используя AGENT_SHEET, ваш CSS должен иметь более высокий приоритет.
В любом случае мне нужно было применить некоторые правила, используя ключевое слово hte !important.

1 голос
/ 20 сентября 2011

Я обнаружил, что ссылка , на которую вы ссылались, работает, если вы ссылаетесь на документ страницы.В моем случае использование gBrowser.contentDocument сработало.

var fileref = gBrowser.contentDocument.createElement("link");
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", "resource://extensionid/content/skin/style.css");
gBrowser.contentDocument.getElementsByTagName("head")[0].appendChild(fileref);

Очевидно, убедитесь, что вы можете получить доступ к вашему CSS по протоколу resource://.

1 голос
/ 29 августа 2010

Я нашел этот обходной путь.Прочитайте файл и введите его содержимое ...

function Read(file)
{
    var ioService=Components.classes["@mozilla.org/network/io-service;1"]
        .getService(Components.interfaces.nsIIOService);
    var scriptableStream=Components
        .classes["@mozilla.org/scriptableinputstream;1"]
        .getService(Components.interfaces.nsIScriptableInputStream);

    var channel=ioService.newChannel(file,null,null);
    var input=channel.open();
    scriptableStream.init(input);
    var str=scriptableStream.read(input.available());
    scriptableStream.close();
    input.close();
    return str;
}

var style = $("<style type='text/css' />");
style.html(Read("chrome://orkutmanager/skin/om.css"));
$("head").append(style);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...