2012-07-18 16 views
7

Estoy trabajando en una extensión de Firefox y necesito insertar un JavaScript en una página desde un script de contenido. En mi extensión de Chrome he hecho lo siguiente:¿Cómo hacer referencia a un archivo en el directorio de datos de una extensión de 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); 
} 

El archivo está en mi directorio de datos. ¿Cómo puedo hacer referencia a un archivo js en una secuencia de comandos de contenido de extensión de Firefox (donde he usado chrome.extension.getURL() para Chrome)?

Respuesta

10

Si estás en main.js en su SDK basado en add-on, que requiere y utiliza el helper '' de datos desde el 'yo' del objeto:

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

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

Para más información:

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

una vez que este URI de recursos, a continuación, puede suministrarla a un guión de contenido utilizando self.postMessage o self.port.emit:

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

+0

que está en la principal razón guión y no en un contenido? o estoy equivocado? – PeeHaa

+0

Eso está en la secuencia de comandos principal, 'main.js', sí. – canuckistani

+0

"¿Cómo puedo hacer referencia a un archivo js en un plugin de firefox ** contentscript **". ¿Es posible o lo estoy mirando de la manera incorrecta? – PeeHaa

2

Parece que a partir de Firefox 38, cfx ha sido reemplazado por jpm.

que podría ser la razón por esta línea no estaba funcionando para mí:

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

simplemente tenía que volver a escribir un poco:

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