0

我正在开发一个 firefox 扩展,我正在尝试让它添加一个存储在扩展中的图像(您使用 chrome:// 访问的那种,虽然我不确定是否有正式名称)

body.innerHTML+="<div style=\"position:fixed;top:0em;left:0em;background-color:white;\"><img src=\"chrome://tumblrscrollr/content/save.png\" /></div>";

这应该将 save.png 放在页面的左上角,但是那里什么也没有出现(甚至没有白色背景)。如果我用互联网上的 url 替换 chrome://tumblrscrollr/content/save.png,图像会正确显示。如果我直接在地址栏中访问 c​​hrome://tumblrscrollr/content/save.png,它显示正常。我认为有一些安全问题或正在发生的事情不允许页面中的 img 标签访问扩展程序的文件,但由于谷歌不支持符号并且任何对“chrome”的搜索只会返回浏览器,我发现很难找到任何答案。

4

1 回答 1

3

您需要使用 chrome 包的contentaccessible标志tumblrscrollr这将允许网页使用其图像。这意味着您的chrome.manifest文件应该有这样的一行:

content tumblrscrollr foo/bar contentaccessible=yes

请注意,必须始终在条目上指定此标志,但它也会影响任何以含义content开头的地址。chrome://tumblrscrollr/chrome://tumblrscrollr/skin/

顺便说一句,您不应该添加这样的元素 - 这会使浏览器再次解析整个文档正文,这很慢并且可能导致各种副作用。如果您需要添加单个元素,则只需创建该元素并添加它,例如:

var element = body.ownerDocument.createElement("div");
element.setAttribute("style", "position:fixed;top:0em;left:0em;background-color:white;");
element.innerHTML = "<img src=\"chrome://tumblrscrollr/content/save.png\" />";
body.appendChild(element);
于 2012-09-13T07:31:39.033 回答