Вставьте файл CSS на веб-страницу через расширение Firefox.

Я пишу расширение для Firefox и использую их дополнительный SDK; но я не могу понять, как внедрить локальный файл CSS из папки данных на веб-страницу. Было бы здорово, если бы был способ сделать это через пакет page_mod.


person italiano40    schedule 04.12.2011    source источник


Ответы (2)


Начиная с Add-on SDK 1.14 существует экспериментальная (API может измениться) поддержка этого в page-mod:

var pageMod = require("sdk/page-mod").PageMod({
  include: "*",
  contentStyleFile: require("sdk/self").data.url("my-style.css")
});

См. Изменение веб-страниц на основе URL для подробного руководства по использованию page-mod.

В вики Addon SDK есть страница, на которой обсуждаются проблемы с текущей реализацией, хотя кажется немного устаревшим.

Под капотом используется nsIDOMWindowUtils.loadSheet( ), чтобы добавить таблицу стилей, не касаясь DOM страницы. (Этот API был добавлен в Firefox 18, см. ошибка 737003. До этого у вас использовать nsIStyleSheetService, который был похож, но не специфичен для вкладок.)


До этого вы могли использовать скрипт содержимого мода страницы для вставки ссылки или элемента стиля (пример). [edit] благодаря комментарию lwburk, вот более детальное описание в Greasemonkey Hacks: Советы и инструменты для ремиксации в Интернете Firefox by Mark Pilgrim:« Изменить страницу Раздел "Стиль".

person Nickolay    schedule 04.12.2011
comment
Я не могу использовать XPCOM, так как я использую SDK appbuilder. - person italiano40; 04.12.2011
comment
@ italiano40: вы продолжаете ссылаться на SDK для разработчиков приложений. Если вы имеете в виду дополнительный SDK, используйте правильный термин. Компоненты XPCOM можно использовать в дополнении SDK (require('chrome')), хотя это сложная тема, которая сделает недействительными гарантии прямой совместимости, которые обычно предоставляет дополнительный SDK. - person Nickolay; 04.12.2011
comment
См. также: books.google.com/ - person Wayne; 10.12.2011

Теперь для вставки CSS из main.js можно использовать «page-mod»:

var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");

pageMod.PageMod({
  include: "*.org",
  contentStyleFile: data.url("my-page-mod.css")
});
person Eloims    schedule 30.03.2013
comment
Спасибо, что упомянули об этом! Я обновил свой ответ для более новой версии Addon SDK. - person Nickolay; 01.05.2013