2

我正在构建一个 Chrome 扩展程序,并试图通过内容脚本向 DOM 添加一个带有背景图像的 div。CSS 正确加载,并且通过开发人员工具检查器查看图像 URL 似乎是正确的。

$('.close-button').css('background', 'url('+chrome.extension.getURL('img/btn_close.png')+')');

URL 在检查器中显示为

chrome-extension://fdghianmcdbcgihapgdbjkdoaaocmoco/img/btn_close.png

但是图像不会在后台加载。如果我做同样的事情,但将图像加载为 img 标签的 src,则图像在浏览器中明显显示为损坏。

但是,当我将此 URL 粘贴到浏览器 URL 栏中并加载它时,它显示得很好。将它加载到 DOM 有什么问题?

4

1 回答 1

13

我在 chrome 扩展文档中找到了答案。默认情况下,无法在网页 DOM 中访问扩展根目录中的文件。开发人员可以使用 manifest.json 文件中的“web_accessible_resources”设置覆盖它:

http://code.google.com/chrome/extensions/manifest.html#web_accessible_resources

{
  ...
  "web_accessible_resources": [
    "images/my-awesome-image1.png",
    "images/my-amazing-icon1.png",
    "style/double-rainbow.css",
    "script/double-rainbow.js"
  ],
  ...
}

对 Matt Greer 建议使用数据 url 的评论也特别大声疾呼,我相信这也有效。

于 2012-04-22T03:04:46.327 回答