Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Agregar una opción de Menú en Firefox

Este articulo necesita una revisión editorial. Cómo puedes ayudar.

Para realizar los pasos que se describen a continuación es necesario tener instalado el SDK y conocimientos básico de cfx.

Si esta usando jpm en vez de cfx, el método para usar módulos externos es diferente, y debe leer la versión jmp en vez de esta guía.

El SDK aún no posee una API para agregar nuevas opciones de menú a Firefox. Pero su diseño permite que sus funcionalidades sean ampliadas, por lo tanto cualquiera puede desarrollar y publicar módulos para que sean usados por los desarrolladores de add-on. Afortunadamente, Erik Vold escribió el módulo menuitems que permite agregar opciones al menú.

Este manual cumple con una doble funcionalidad. Describe el método general para usar un módulo externo, de terceras partes en el add-on, y describe como agregar una opción al menú usando el módulo menuitems en particular.

Primero, cree una nuevo add-on. Cree un directorio llamado "clickme" donde desee, ingrese en el directorio recien creado y ejecute cfx init.

mkdir clickme
cd clickme
cfx init

La estructura del directorio sera creada:

  • clickme
    • data
    • lib
      • main.js
    • package.json
    • tests
      • test-main.js
 

Instalar menuitems

Cree un directorio llamado "packages" dentro del directorio "clickme". Luego descargue el paquete menuitems package desde https://github.com/mykmelez/menuitems-jplib y extraiga el archivo dentro del directorio "packages" que acaba de crear:

mkdir packages
cd packages
tar -xf ../erikvold-menuitems-jplib-d80630c.zip

Dependencias del Módulo

Si los módulos de terceras partes solo dependen de los módulos de SDK, puede usarlos inmediatamente, pero si dependen de otros módulos de terceras partes, debe instalar también esas dependencias.

En el directorio principal del paquete encontrará un archivo llamado "package.json". Abralo y busque una entrada llamada "dependencies". La entrada para el paquete menuitems es:

"dependencies": ["vold-utils"]

Esto significa que se debe instalar el paquete vold-utils, lo cual puede hacerse descargándolo desde https://github.com/mykmelez/vold-utils-jplib y agregándolo dentro del directorio packages junto a menuitems.

Usar menuitems

La documentación para el módulo menuitems nos dice que creemos una opción del menú usando MenuItem(). De las opciones aceptadas por MenuItem(), usaremos este resumido conjunto:

  • id: identificador para esta opción de menú
  • label: texto que mostrará la opción de menú
  • command: función que se ejecutará cuando se seleccione la opción de menú
  • menuid: identificador del elemento padre de la opción de menú
  • insertbefore: identificador de la opción del menú delante de la cual queremos que aparezca nuestra opción de menú.
var menuitem = require("menuitems").Menuitem({
  id: "clickme",
  menuid: "menu_ToolsPopup",
  label: "Click Me!",
  onCommand: function() {
    console.log("clicked");
  },
  insertbefore: "menu_pageInfo"
});
 

Luego, se debe declarar la dependencia en el paquete menuitems. En el archivo package.json del add-on se agrega:

"dependencies": "menuitems"

Note que debido al bug 663480, si agrega una línea dependencies en package.json, y usa cualquier módulo del SDK, tendrá que declarar la dependencia a ese paquete integrado, como sigue:

"dependencies": ["menuitems", "addon-sdk"]

Ahora esta todo listo. Ejecute el add-on y verá la nueva opción de menú en el menú Herramientas: seleccionela y verá aparecer en la terminal info: clicked.

Advertencia

Los módulos de terceras partes son una manera genial de usar funcionalidades que no son proporcionadas directamente por SDK, pero debido a que los módulos de terceras partes usan APIs de bajo nivel pueden no funcionar correctamente en las nuevas versiones de Firefox.

 

Etiquetas y colaboradores del documento

Etiquetas: 
 Colaboradores en esta página: goliveira
 Última actualización por: goliveira,