通过firefox扩展将CSS文件注入网页

时间:2011-12-04 06:13:16

标签: css firefox-addon firefox-addon-sdk

我正在编写Firefox扩展程序,我正在使用他们的附加SDK;但我无法弄清楚如何将数据文件夹中的本地CSS文件注入网页。如果有办法通过page_mod包来做这件事会很棒。

2 个答案:

答案 0 :(得分:6)

从Add-on SDK 1.14开始,page-mod模块中的实验(API可能会更改)支持:

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

有关使用page-mod的详细指南,请参阅Modifying Web Pages Based on URL

a page on the Addon SDK's wiki讨论当前实施的问题,虽然看起来有点过时。

在幕后它使用nsIDOMWindowUtils。loadSheet()来添加样式表而不触及页面的DOM。 (此API已在Firefox 18中添加,请参阅bug 737003。在此之前,您必须使用类似的nsIStyleSheetService,但不是特定于标签的。)


在此之前,您可以使用page-mod的内容脚本来插入链接或样式元素(example)。 [编辑]感谢lwburk的评论,这是Greasemonkey Hacks: Tips & Tools for Remixing the Web with Firefox By Mark Pilgrim: "Alter a Page's Style" section中更精细的详细描述。

答案 1 :(得分:1)

要从main.js插入CSS,现在可以使用“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")
});