2012-09-12 42 views
0

我正在做一个firefox扩展,我试图让它添加一个扩展名(使用chrome://访问的类型)我不知道是否有一个正式名称)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,但没有出现在那里(即使不是白色背景)。如果我用互联网上的网址替换chrome://tumblrscrollr/content/save.png,图像将正确显示。如果我直接在地址栏中访问chrome://tumblrscrollr/content/save.png,它会显示正常。我认为有一些安全事情或一些事情不允许页面中的img标签访问扩展的文件,但由于谷歌不支持符号,任何'chrome'搜索只是返回浏览器,我发现很难找到任何答案。

+0

增加了更普遍的“火狐 - 插件”标签 - 这是我不清楚这个职位应被标记“firefox- addon-sdk'tho。 – canuckistani

回答

3

对于tumblrscrollr chrome包,您需要使用contentaccessible flag,这将允许网页使用其图像。也就是说你的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);