firefox-addon Tutorial
Empezando con Firefox-Addon
Buscar..
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 usanrequire()
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 porjpm run
o se consolidan en un archivo .xpi porjpm 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()
complementostartup()
,shutdown()
,install()
yuninstall()
.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:
- Los temas [ parcialmente en desuso ] permiten la personalización de la apariencia de Firefox. Principalmente, proporcionando diferentes reglas CSS a todas las partes del navegador. Los "temas completos" están en desuso y se planea que se reemplacen parcialmente con una interfaz que actualmente no existe .
- Los complementos móviles son para Firefox para Android. Actualmente, todos los tipos de extensión de Firefox que son sin reinicio son compatibles.
- Los complementos de los motores de búsqueda se utilizan para agregar motores de búsqueda adicionales a la barra de búsqueda del navegador.
- Los diccionarios de usuario permiten el uso de ortografía en idiomas adicionales.
- Los paquetes de idiomas agregan idiomas adicionales a la interfaz de usuario de Firefox.
- Los complementos son bibliotecas compartidas para mostrar contenido que la propia aplicación no puede mostrar de forma nativa.
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:
- Ir a
about:debugging
- Haga clic en "Cargar complemento temporal"
- En el selector de archivos, navegue hasta el directorio que contiene los archivos adicionales.
- Seleccione cualquier archivo en la carpeta
- 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
:
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.
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.
Instalación de complementos para el desarrollo.
Los complementos se pueden instalar como:
- Complementos normales, que se instalan hasta que se desinstala.
- Los complementos temporales (solo extensiones ): solo se instalan hasta que se reinicia Firefox, o se pueden desinstalar manualmente antes.
- Uso de
jpm run
(solo SDK de complemento ): ejecuta automáticamente Firefox usando un perfil temporal con el complemento cargado. - 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 .