10

Estoy moviendo una extensión de Chrome a Firefox y estoy usando Add-on SDK. Para acceder a las funciones declaradas en el archivo de fondo desde un panel o ventana emergente, puedo usar chrome.extension.getBackgroundPage en Chrome. ¿Hay algún equivalente en Firefox por el cual puedo acceder a los datos/funciones declarados en main.js o algún otro archivo en cualquier otro lugar?Compartir datos entre archivos en una extensión de Firefox

Respuesta

1

Aparentemente, Jetpack no es compatible con esto (aunque es posible con los complementos de Firefox de vanilla).

Pero hay un capítulo que lo ayudará, simplemente no es tan directo, ya que implica mensajes a través de los eventos between add-on and the content scripts.

Editar:

Tomemos un ejemplo de MDN about extensions. Puedes pensar en XUL + JavaScript como HTML + JavaScript. A diferencia de la forma en que Jetpack separa (cajas de arena) su código de complemento principal de su código de contexto (html, javascript, css en paneles, widgets, etc.); se ejecuta en un solo "espacio de usuario".

Adaptación en la superposición en la página del enlace anterior, y la adición de un código Javascript que trabaja con XPCOM, se obtiene:

<?xml version="1.0"?> 
<overlay id="sample" 
     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
<script type="text/javascript"> 
    function getOS() { 
    return Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS; 
    } 
</script> 
<statusbar id="status-bar"> 
    <statusbarpanel id="my-panel" label="OS?" onclick="alert(getOS())" /> 
</statusbar> 
</overlay> 

Y si digamos que la función está en un archivo externo que acaba de incluirlo como JavaScript normal

+0

Hola, qué característica de vanilla firefox hace que esta funcionalidad sea posible. ¿Es una función específica o una diferencia en la estructura de la extensión? Gracias. – usertest

+0

Al compilar complementos sin Jetpack, no hay fondo en primer plano para su complemento. Puede acceder a cualquier código JavaScript desde su panel, botón, barra de herramientas, ventana, etc. Y cuando digo alguno me refiero incluso al código de otros complementos, como Firebug ... – mhitza

+0

No estoy usando la versión jetpack. Dijiste que era posible sin jetpack, ¿cómo es eso? Gracias. – usertest

Cuestiones relacionadas