css - 如何将外部资源/字体添加到 Firefox 扩展中?

标签 css firefox fonts firefox-addon firefox-addon-sdk

<分区>

我正在尝试将字体添加到 Firefox 扩展中。

我已经成功地使用 PageMode 添加了样式:

pageMod.PageMod({ ...
...
contentStyleFile: [
...
self.data.url('font-awesome.min.css')
],

在我的 CSS 中:

font-family:'FontAwesome';src:url('resource://extension_id/fonts/fontawesome-webfont.eot?v=4.0.3')

其中 extension_id 当然是我的 ID。

当脚本加载时我得到:

可下载字体:不允许下载(字体系列:“FontAwesome”样式:正常重量:正常拉伸(stretch):正常源索引:2):错误的 URI 或不允许跨站点访问 来源:resource://extension_id/fonts/fontawesome-webfont.ttf?v=4.0.3 font-awesome.min.css

最佳答案

参见文档:PageMod > Options > 内容样式文件


您目前不能在以这种方式加载的样式表中使用相对 URL。例如,考虑一个引用外部文件的 CSS 文件,如下所示:

background: rgb(249, 249, 249) url('../../img/my-background.png') repeat-x top center;

如果您使用 contentStyleFile 附加此文件,将找不到“my-background.png”。

作为解决此问题的方法,您可以为“数据”目录中的文件构建一个绝对 URL,并构建一个 contentStyle 选项,将该 URL 嵌入您的规则中。例如:

var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod").PageMod({
  include: "*",
  contentStyleFile: data.url("my-style.css"),
  // contentStyle is built dynamically here to include an absolute URL
  // for the file referenced by this CSS rule.
  // This workaround is needed because we can't use relative URLs
  // in contentStyleFile or contentStyle.
  contentStyle: "h1 { background: url(" + data.url("my-pic.jpg") + ")}"
});

此插件使用一个单独的文件“my-style.css”,使用 contentStyleFile 加载,用于所有 CSS 规则,引用外部文件的除外。对于需要引用存储在插件的“数据”目录中的“my-pic.jpg”的规则,它使用contentStyle。

关于css - 如何将外部资源/字体添加到 Firefox 扩展中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21172670/

上一篇:css - 表格单元格中的可滚动 div 不起作用

下一篇:javascript - 创建一个叠加层,但允许特定区域显示出来?

相关文章:

html - 到达div时换行

css - 将 xpath 转换为 css

css - VueJS 2 列表动画未按预期使用转换名称工作

html - 列表样式类型为 : none; & list-style-position: inside; takes extra space in Firefox 的无序列表

CSS - Firefox - DIV 问题

ios - 在界面生成器中使用自定义字体

css - 缩放图像 CSS

php - CodeIgniter 网站上的 Firefox 403 字体

ios按下时更改按钮标题字体

java - PdfBox 2.0.3 NullPointerException 在 Linux 上的字体编码