2012-09-12 38 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);