Looking for firefox-addon Answers? Try Ask4KnowledgeBase
Looking for firefox-addon Keywords? Try Ask4Keywords

firefox-addonEmpezando con Firefox-Addon


Introducción

Complementos:

Los complementos de Firefox generalmente se agrupan en extensiones, y luego "otros tipos" de complementos de Firefox.

Extensiones

Las extensiones permiten personalizar Firefox agregando o modificando la funcionalidad de Firefox. Algunos de los tipos de cosas que se pueden hacer con extensiones incluyen:

  • Cambie la forma en que aparecen los sitios web específicos, su contenido o cómo interactúan con ellos.
  • Personaliza la interfaz de usuario de Firefox.
  • Agrega características adicionales a Firefox
  • Cambia cómo funcionan las características de Firefox existentes

Las extensiones de Firefox están, principalmente, escritas en JavaScript con la adición de algunas API de JavaScript.

Depredación y eliminación de todo tipo de extensiones que no sean WebExtensions

Los complementos de Firefox, particularmente las extensiones, están en un estado de flujo en este momento. Mozilla ha anunciado y confirmado que han desaprobado todos los tipos de extensiones de Firefox, excepto WebExtensions, y que todas las extensiones basadas en WebExtensions no estarán habilitadas en Firefox 57, que está programada para 2017-11-14 .

Tipos de Extensiones

Firefox tiene cuatro tipos de extensiones (todas las cuales se conocen comúnmente como complementos):

  • WebExtensions : Avanzando, las WebExtensions son el único tipo de extensión de Firefox que será compatible. Estos complementos están descritos por un archivo manifest.json . Esta API es similar a la utilizada para las extensiones de Google Chrome. Estos complementos usan HTML y CSS además de Javascript. Si bien Mozilla ha declarado que esta API es el futuro de las extensiones de Firefox, esta API aún está en desarrollo. Por ahora, es probable que estés mejor desarrollando y probando tu complemento WebExtension con Firefox Developer Edition o Firefox Nightly . También debe tomar nota de qué versión de Firefox se requiere para la funcionalidad que desea usar. Esta información se encuentra en la sección "Compatibilidad del navegador" de las páginas de documentación de MDN.

    Las extensiones web utilizan una API significativamente diferente de los otros tres tipos de extensiones. No hay, intencionalmente, capacidad para usar las interfaces proporcionadas por ninguno de los otros tipos de complemento.

  • Add-on SDK : [ obsoleto; programado para su eliminación ] Estos complementos están descritos por un archivo package.json que se genera inicialmente ejecutando jpm init . Estas extensiones a menudo usan require() para cargar APIs de alto nivel o de bajo nivel para interactuar con Firefox. Estos complementos usan HTML y CSS además de Javascript. Actualmente, estos complementos se envuelven en una extensión bootstrapped cuando se cargan para ser probados por jpm run o se consolidan en un archivo .xpi por jpm xpi para su distribución (es decir, se cargan en AMO / Mozilla). En otras palabras, son extensiones de arranque con un contenedor SDK.

    Mozilla parece estar comprometido a continuar admitiendo las extensiones basadas en SDK de complementos siempre que la extensión no use require("chrome") , o de lo contrario dependa de XUL , XPCOM y XBL .

    La mayoría de las cosas que se pueden hacer en una extensión bootstrapped se pueden hacer en un SDK complementario. Sin embargo, muchas de estas cosas evitan el SDK, que pierde una parte significativa de los beneficios de usar el SDK adicional.

  • Arrancado : [ desaprobado; programado para su eliminación ] Estas extensiones también suelen denominarse "sin reinicio" porque fueron el primer tipo de extensión de Mozilla que no requirió que la aplicación se reiniciara para cargar / descargar el complemento. Sin embargo, restartless es un descriptor de cómo funcionan. El uso de "restartless" como nombre para este tipo de complemento es confuso porque tanto el complemento SDK del complemento como el complemento WebExtension tampoco requieren que la aplicación se reinicie al cargar o descargar el complemento. Por esa razón, hay una tendencia a no usar más el "reinicio sin reinicio" como el nombre para este tipo de complemento.

    Estos complementos usan HTML y CSS además de Javascript. Muchos también interactúan con Firefox usando XUL .

    Estos complementos tienen un archivo de JavaScript llamado bootstrap.js que debe contener puntos de entrada (funciones) que se llaman para el startup() complemento startup() , shutdown() , install() y uninstall() .

    Estos complementos contienen un archivo install.rdf que describe el complemento. Por lo general, pero no siempre, también contienen un archivo chrome.manifest que describe cómo los archivos y directorios en la extensión se relacionan con la aplicación Mozilla (por ejemplo, Firefox).

    La mayoría, pero no todas, de las cosas que se pueden hacer en superposición / XUL / Extensiones heredadas se pueden lograr en complementos de arranque. Todo lo que se puede hacer en el SDK de complemento se puede hacer en una extensión de arranque (las extensiones del SDK de complemento son complementos de arranque con algunas capas de API basadas en JavaScript).

    Mozilla ha declarado que planean dejar de usar "los complementos que dependen de XUL , XPCOM y XBL ". Si bien no todos los complementos de arranque dependen de estas tecnologías, existe una tendencia a que los complementos de arranque funcionen a un nivel más bajo que los complementos del SDK de complementos y la extensión de Web. Por lo tanto, es más probable que usen estas tecnologías. Si bien hay algunos que dicen que se planea que todos los complementos de arranque estén en desuso, no está claro que ese sea el caso. Después de todo, las extensiones del SDK de complementos no están en desuso (a menos que usen require("chrome") , o dependan de XUL, XPCOM o XBL) y todas las extensiones del SDK de complementos son extensiones de arranque, solo con un envoltorio de SDK .

  • Overlay / XUL / Legacy : [ obsoleto; programado para su eliminación ] Estos complementos contienen un archivo install.rdf que describe el complemento y un archivo chrome.manifest para describir cómo se relacionan los archivos del complemento (por ejemplo, la superposición) de los archivos de la aplicación. Cómo funciona el complemento con la aplicación depende completamente de las relaciones descritas en el archivo chrome.manifest . Las únicas excepciones a esto son algunas cosas como los iconos de la extensión y el archivo que describe las opciones de la extensión que se indican en el archivo install.rdf . Estas extensiones interactúan con la aplicación (por ejemplo, Firefox) en un nivel muy bajo. Esto hace que sea más probable que se rompan cuando se realizan cambios en la aplicación.

    Estos complementos utilizan XUL, HTML y CSS además de Javascript. Algunos también usan XPCOM , y XBL .

    Todas las extensiones Overlay / XUL / Legacy se planean en desuso.

Otros tipos de complementos de Firefox

Cuando la mayoría de la gente piensa en los complementos de Firefox, están pensando en las extensiones descritas anteriormente. Sin embargo, hay algunos tipos adicionales de complementos de Firefox:

Este "ejemplo" se copia principalmente, con algunas modificaciones, de mi respuesta, Makyen's, en una pregunta de stackoverflow .
Algunas partes de este contenido se copiaron, o al menos se basaron en, la página de complementos en Mozilla Developer Network (MDN).
Esto fue publicado originalmente por Makyen en la sección "Comentarios" de la etiqueta firefox-addon . Luego fue modificado por Ondřej Doněk , quien eliminó un extra "para". En una sola edición realizada por nus , se movió de "Observaciones" a un ejemplo "fijado" titulado "Introducción". Desafortunadamente, al hacerlo, el sistema perdió información de atribución.

Instalación de un complemento temporal

Para probar un complemento que está desarrollando, es probable que desee instalarlo en Firefox temporalmente. Puede hacerlo cargándolo como un complemento temporal . Para hacerlo:

  1. Ir a about:debugging
  2. Haga clic en "Cargar complemento temporal"
  3. En el selector de archivos, navegue hasta el directorio que contiene los archivos adicionales.
  4. Seleccione cualquier archivo en la carpeta
  5. Haga clic en "Abrir"

La siguiente animación muestra about:debugging cargar un complemento llamado "aaaaaaaaaaaaaaaaaa - complemento de demostración" desde about:debugging y que el complemento aparece en about:addons :

cargando un complemento temporal

Como un complemento temporal, puede cargar un complemento desempaquetado (un directorio que contiene todos los archivos para el complemento que empaquetaría en un archivo .xpi ), o un complemento que está empaquetado en un archivo .xpi .xpi Archivo .xpi . Los complementos temporales no necesitan ser firmados . El complemento temporal permanece instalado hasta que se desinstala manualmente o se reinicia Firefox.

Documentación de Mozilla: Instalación temporal en Firefox

WebExtensiones

WebExtensions se pueden cargar como complementos temporales. Esto se puede hacer con los archivos adicionales desempaquetados o empaquetados en un archivo .xpi .

SDK de complemento de Firefox

No puede cargar una extensión de Firefox Add-on SDK como un complemento temporal sin primero empaquetarlo en un archivo .xpi con jpm xpi . En general, utilizará jpm run para probar su extensión del SDK del complemento de Firefox.

Los archivos que normalmente se editan para una extensión SDK de complemento no hacen una extensión completa sin algunas funciones de ajuste adicionales y el archivo package.json se traduce en un archivo install.rdf y, posiblemente, un archivo chrome.manifest . Este proceso envuelve la extensión del SDK del complemento en un complemento Bootstrap / Restartless, que se entiende por Firefox. Sin este proceso, Firefox no podrá cargar el complemento. Este proceso es realizado por jpm xpi dando como resultado un archivo .xpi empaquetado. La ejecución de jpm run también realiza este proceso, pero almacena los archivos resultantes en una ubicación temporal e invoca a Firefox con el complemento instalado.

Bootstrap / Restartless

Los complementos Bootstrap / Restartless se pueden cargar como complementos temporales. Esto se puede hacer con los archivos adicionales desempaquetados o empaquetados en un archivo .xpi .

Legado / Superposición / XUL

Los complementos Legacy / Overlay / XUL no se pueden cargar como complementos temporales.

Instalación de complementos para el desarrollo.

Los complementos se pueden instalar como:

  1. Complementos normales, que se instalan hasta que se desinstala.
  2. Los complementos temporales (solo extensiones ): solo se instalan hasta que se reinicia Firefox, o se pueden desinstalar manualmente antes.
  3. Uso de jpm run (solo SDK de complemento ): ejecuta automáticamente Firefox usando un perfil temporal con el complemento cargado.
  4. Uso de web-ext run (solo WebExtensions ): ejecuta automáticamente Firefox usando un perfil temporal con su complemento cargado como un complemento temporal. De forma predeterminada, supervisa sus archivos de extensión en busca de cambios y recarga automáticamente su extensión cuando los archivos cambian.

Complementos normales

Instalar extensiones empaquetadas (es decir, el archivo .xpi ) puede ser simplemente una cuestión de arrastrarlo y soltarlo en una ventana de Firefox que ejecuta el perfil en el que lo desea instalar. También se pueden instalar directamente descargando la extensión de AMO . Dependiendo de cuál sea su objetivo (un perfil, todos los perfiles, todos los usuarios, qué sistema operativo, etc.), hay otras opciones para instalar extensiones .

Estas otras opciones incluyen varios directorios fuera del directorio del perfil en el que puede colocar el archivo .xpi para que se instale para todos los usuarios de una versión particular de Firefox, o todos los perfiles de un usuario particular. En Windows, también puede instalar una extensión agregando una clave al Registro de Windows. En general, estos otros directorios no son aquellos en los que instalaría un complemento en el que está escribiendo actualmente. Sin embargo, pueden usarse para asegurarse de que tiene complementos que usa para respaldar sus pruebas / desarrollo cargados en cualquier perfil de Firefox o versión de Firefox que use. Por ejemplo, al colocar un archivo .xpi en <Firefox install directory>/browser/extensions , puede tener una extensión disponible incluso en el perfil temporal creado por jpm run (utilizado para probar las extensiones basadas en el SDK del complemento de Firefox).

Para el desarrollo / prueba , puede tener la extensión en cualquier directorio de su unidad local usando un archivo proxy de la extensión de Firefox (cree un archivo con el nombre de <em:id> la extensión (en install.rdf para Bootstrap / Restartless and Overlay / Legado) en el directorio de extensiones del perfil que contiene una línea con la ruta completa al directorio que contiene los archivos de la extensión. Las extensiones instaladas de esta manera casi siempre estarán sin firmar (ver más abajo). Por lo tanto, este método no es muy útil si desea instalar la extensión en una versión Release o Beta de Firefox.

Limitaciones en la instalación de complementos normales: Add-on Signing

Para instalar una extensión como un complemento normal en las versiones Release o Beta de Firefox que sean superiores o iguales a la versión 48, la extensión debe estar firmada por Mozilla . Una extensión se firma enviándola a AMO . Una vez firmado, la extensión se puede instalar en cualquier versión de Firefox que admita. Para las versiones de Firefox anteriores a la versión 43, no era necesario que Mozilla firmara las extensiones. Mozilla no necesita firmar otros tipos de complementos que no sean extensiones .

Puede instalar extensiones no firmadas como complementos normales en otras versiones de Firefox (por ejemplo, Firefox Developer Edition , Firefox Nightly , Unbranded Beta o Unbranded Release ) configurando xpinstall.signatures.required en false en about:config . La configuración de esta opción también fue efectiva en las versiones 43 y 48 de Release y Beta Firefox. La configuración de esta opción no es efectiva en las versiones Release y Beta de Firefox a partir de la versión 48 en adelante.

Sin embargo, puede deshabilitar completamente la comprobación de firmas adicionales en Firefox en todas las versiones, incluida la versión. La respuesta a la pregunta de desbordamiento de pila ¿ Cómo puedo deshabilitar la comprobación de firmas para los complementos de Firefox? describe cómo hacerlo.

La necesidad de poder instalar complementos no firmados para fines de desarrollo se ha reducido en gran medida por la disponibilidad de extensiones de instalación como complementos temporales . Los complementos temporales no necesitan estar firmados, y pueden cargarse en cualquier versión actual de Firefox. Como su nombre lo indica, el principal inconveniente de los complementos temporales es que son temporales. Se deben volver a instalar cada vez que se reinicie Firefox. Sin embargo, hay casos de uso en los que es preferible instalar un complemento como un complemento normal, pero no firmado, en lugar de como un complemento temporal. Un complemento debe instalarse como un complemento sin firma si es necesario que el complemento permanezca instalado incluso después de reiniciar Firefox. Esto podría ser deseable por una variedad de razones, incluyendo: pruebas de uso a largo plazo, o para probar cómo funciona el complemento cuando se inicia Firefox.

Complementos temporales ( solo extensiones )

Las extensiones Web, las extensiones basadas en el SDK del complemento de Firefox y las extensiones Restartless / Bootstrap se pueden instalar como complementos temporales desde about:debugging . Las extensiones se pueden cargar como complementos temporales en cualquier versión actual de Firefox. No es necesario que los complementos temporales estén firmados y pueden cargarse desde un paquete (un directorio con archivos) o un paquete (por ejemplo, un archivo .xpi ).

Para obtener información detallada sobre la instalación temporal de extensiones, consulte Instalación de un complemento temporal .

Instalar complementos sin firmar

Para instalar una extensión como un complemento normal en las versiones Release o Beta de Firefox que sean superiores o iguales a la versión 48, la extensión debe estar firmada por Mozilla . Una extensión se firma enviándola a AMO . Una vez firmado, la extensión se puede instalar en cualquier versión de Firefox que admita. Para las versiones de Firefox anteriores a la versión 43, no era necesario que Mozilla firmara las extensiones. Mozilla no necesita firmar otros tipos de complementos que no sean extensiones .

Puede instalar extensiones no firmadas como complementos normales en otras versiones de Firefox (por ejemplo, Firefox Developer Edition , Firefox Nightly , Unbranded Beta o Unbranded Release ) configurando xpinstall.signatures.required en false en about:config . La configuración de esta opción también fue efectiva en las versiones 43 y 48 de Release y Beta Firefox. La configuración de esta opción no es efectiva en las versiones Release y Beta de Firefox a partir de la versión 48 en adelante.

La necesidad de poder instalar complementos no firmados durante el desarrollo de complementos se ha reducido considerablemente debido a la disponibilidad de extensiones de instalación como complementos temporales . Los complementos temporales no necesitan estar firmados, y pueden cargarse en cualquier versión actual de Firefox. Como su nombre lo indica, el principal inconveniente de los complementos temporales es que son temporales. Se deben volver a instalar cada vez que se reinicie Firefox. Sin embargo, hay casos de uso en los que es preferible instalar un complemento como un complemento normal, pero no firmado, en lugar de como un complemento temporal. Un complemento debe instalarse como un complemento sin firma si es necesario que el complemento permanezca instalado incluso después de reiniciar Firefox. Esto podría ser deseable por una variedad de razones, incluyendo: pruebas de uso a largo plazo, o para probar cómo funciona el complemento cuando se inicia Firefox.