2013-12-08 75 views
1

我一直在試圖將現有的Chrome擴展移植到Firefox。
擴展使用內容腳本將元素添加到頁面,然後繼續從該元素引導角度應用程序。
這部分按預期工作,但使用templateUrl的單個指令被阻止。遍歷代碼提供了錯誤消息,如Access to restricted URI deniedNS_ERROR_DOM_BAD_URIFirefox附加組件中的Angularjs - 從內容腳本訪問擴展資源

在Chrome中,此問題已通過'web_accessible_resources'白名單解決。
這個previous question似乎表明在Firefox中沒有類似的方式來訪問擴展資源。這將是相當不幸的,因爲儘管我可以內聯所有相關模板,但該擴展還包括一些以編程方式插入頁面的圖像。
有什麼辦法可以獲得SDK擴展中的擴展資源?
如果不是,用傳統擴展(隱含here)這樣做是否合理容易?

回答

1

您可以使用SDK中的self module獲取data目錄中文件的可解析資源URI。如果您的角文件位於./data/,您可以通過以下方式檢索它:

const self = require('sdk/self'); 
console.log(self.data.url('angular.js')); 
// Prints the url of `./data/angular.js` 
+0

不幸的是,這隻適用於main.js或類似的文件(不是內容腳本)。我使用self.options將來自main.js的URI傳遞給內容腳本,但實際上不允許訪問它們。 – dusty

+0

內容腳本不是特權代碼 - 它們沒有commonjs「require」加載器。 – jsantell

相關問題