2013-07-07 130 views
2

如何從JavaScript代碼直接注入頁面訪問Firefox擴展數據? 我正在尋找類似於web_accessible_resources的關鍵在manifest.json鉻擴展。 我正在用addon-sdk構建bootstraped(restarless)擴展。當我從內容腳本向頁面注入單獨的腳本時,它工作正常,但是當我想從頁面訪問資源時,它不會讓我 - 錯誤消息類似於如何訪問Firefox擴展資源

訪問受限制的URI被拒絕。

。我也可以從url欄訪問它。這樣產生的I'm使用URL格式:

var data = require("sdk/self").data; 
var url = data.url("some-resource.ext"); 

這給像resource://some_long_addon_id/addon_name/path_to_resource

回答

1

據我所知這是不允許的。

您可以指定您嘗試閱讀的資源類型嗎?

如果它是一個腳本 - 你可以加載腳本內容爲內容腳本,然後使用script標籤通過將其注入頁面的DOM腳本

//content script 
var resourceData = self.data.load(NAME); 
var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.innerText = resurceData; 
head.appendChild(script); 

如果是文本/ XML/HTML添加它/ json - 你可以使用window.postMessage()傳遞它。 一個示例如下所示a link

您也可能會發現,寫在內容腳本的方法監聽內容腳本消息事件,並接收從頁面腳本內容腳本的消息,你可以回發到頁面腳本使用window.postMessage()與資源數據

+0

好的,謝謝。我試圖獲取模板文件,因爲它在chtome中工作,我認爲也會有類似的Firefox。 – hynner