2012-07-18 81 views
7

我正在研究Firefox擴展,我需要從內容腳本中將JavaScript注入頁面。在我的Chrome擴展中,我做了以下操作:如何引用Firefox擴展的數據目錄中的文件?

this.initializeJplayerSupport = function() { 
    var script = document.createElement('script'); 
    script.setAttribute('type', 'application/javascript'); 
    script.setAttribute('src', chrome.extension.getURL('js/custom-jplayer.js')); 
    document.head.appendChild(script); 
} 

該文件位於我的數據目錄中。如何在Firefox擴展內容腳本中引用js文件(我曾使用Chrome的chrome.extension.getURL())?

回答

10

如果您在基於SDK-插件,你需要和使用「數據」助手從「自我」的對象main.js是:

var data = require('self').data; 

console.log(data.url('somefile.js')); // prints the resource uri to the file. 

欲瞭解更多信息:

https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/self#data

一旦你得到這個資源的URI,然後你可以使用它或self.postMessage供應self.port.emit的內容腳本:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts

+0

這是在主腳本權不是在內容中?或者我錯了? – PeeHaa 2012-07-19 07:27:41

+0

這是在主腳本中,'main.js',是的。 – canuckistani 2012-07-19 07:29:41

+0

「如何在firefox插件** contentscript **中引用js文件」。這是可能的還是我看錯了方式? – PeeHaa 2012-07-19 07:30:31

2

它看起來像從Firefox 38開始,cfx已被替換爲jpm

這可能是爲什麼這行不是爲我工作:

var data = require('self').data; 

我只是不得不重寫了一點:

var data = require('sdk/self').data;