El tutorial que les voy a presentar es muy útil para aquellos desarrolladores que deseen hacerle la vida más fácil a los usuarios, ahorrándole la necesidad peligrosa de cambiar preferencias en el about:config de Firefox.
Vamos a utilizar la API de bajo nivel preferences-service, que nos brindan en el addon-sdk1.12.
Los métodos mas importantes de esta API son:
set(preferencia, value)
Permite establecer un valor a una preferencia.
get(preferencia)
Devuelve el valor de una una preferencia.
getLocalized(preferencia)
Si el valor de la preferencia es una dirección, devuelve el valor definido dentro de la misma.
setLocalized(preferencia, value)
Permite establecer la dirección donde se almacena el valor de la preferencia.
Conociendo esto vamos a pasar a un ejemplo. Vamos a construir un add-on que nos permita activar y desactivar el proxy de Firefox. Primero debemos conocer que la preferencia para esto es network.proxy.type, cuando toma valor 0 significa sin proxy y cuando toma valor 1 significa con el proxy configurado por el usuario.
Para crear la plantilla del add-on haremos lo explicado aquí. Copiamos las imágenes siguientes dentro de la carpeta data, las cuales utilizaremos como botones del widget.
Luego abrimos dentro en la carpeta lib, el fichero main.js y escribimos el siguiente código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | //incluimos la API de los widgetvar widgets = require("widget");//con self podemos acceder al contenido de la carpeta data(las imagenes)const data = require("self").data;// incluimos la API de las prefenciasvar pref = require("preferences-service");//creamos el widgetvar widget = widgets.Widget({ id: "btn-proxy", label: "Activar/desactivar proxy", //ponemos como botón a la imagen verde por defecto contentURL: data.url("btn2.png"), //al hacer click en el boton onClick: function() { //especificamos la preferencia a cambiar var name = "network.proxy.type"; //obtenemos el valor actual var proxy = pref.get(name); //si está seleccionada cualquier opción de proxy excepto sin proxy. if(proxy >= 1){ //ponemos la opción en 0 que significa sin proxy pref.set(name,0); //cambiamos la imagen del boton a la roja widget.contentURL = data.url("btn1.png") //si está seleccionada la opción sin proxy. }else if(proxy == 0){ //ponemos la opción en 1 significa con proxy determinado por el usuario pref.set(name,1); //cambiamos la imagen del boton a la verde widget.contentURL = data.url("btn2.png") } }}); |
El código se explica por si solo. Probamos el add-on con cfx run y listo.




