2012-07-18 8 views
7

Sto lavorando su un'estensione per Firefox e ho bisogno di inserire un JavaScript in una pagina da uno script di contenuto. Nella mia estensione Chrome ho fatto quanto segue:Come fare riferimento a un file nella directory dei dati di un'estensione per 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); 
} 

Il file è nella mia directory dei dati. Come posso fare riferimento a un file js in uno script di contenuto estensione firefox (dove ho usato chrome.extension.getURL() per Chrome)?

risposta

10

Se siete nel main.js nel SDK basato su add-on, è necessario e utilizzare l'assistente 'data' dal 'sé' oggetto:

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

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

Per maggiori informazioni:

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

una volta che si ottiene questo URI risorsa, si può quindi fornire ad uno script contenuto utilizzando self.postMessage o self.port.emit:

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

+0

Questo è per lo più giusta sceneggiatura e non in un contentcript? o mi sbaglio? – PeeHaa

+0

Questo è nello script principale, 'main.js', sì. – canuckistani

+0

"Come posso fare riferimento a un file js in un plugin firefox ** contentscript **". È possibile o lo sto guardando nel modo sbagliato? – PeeHaa

2

Sembra che l'avvio in Firefox 38, cfx sia stato sostituito con jpm.

che potrebbe essere il motivo per cui questa linea non funzionava per me:

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

ho semplicemente dovuto riscrivere un po ':

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