2011-04-06 8 views
6

Así que he revisado la documentación del Add-on SDK varias veces y en ningún lugar puedo ver cómo crear barras de herramientas o modificar Los que existen. Tienen un tutorial sobre cómo crear íconos de barra de complementos, pero eso no es lo que quiero. ¿El Add-on SDK es compatible con esto todavía? Si lo hace, ¿alguien puede vincularme a un ejemplo/tutorial?Firefox: ¿Cómo puedo agregar/modificar barras de herramientas usando Add-on SDK (Jetpack)

+0

¿quieres una barra de herramientas o un botón de la barra de herramientas? – erikvold

+0

Lo que quiero hacer es agregar un botón a una barra de herramientas existente, pero no de la misma forma que lo haría yendo a Ver -> Barras de herramientas -> Personalizar ya que eso no me permite ubicarlo en esta barra de herramientas de la manera que quiero (barra de Google Lite). Entonces, sí, quiero un botón, pero un elemento estándar de la barra de herramientas de ese menú no será suficiente. – Telanor

Respuesta

11

Esto funciona para mí:

var data = require("self").data; 
var {Cc, Ci} = require("chrome"); 
var mediator = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator); 

exports.main = function(options, callbacks) { 
    addToolbarButton(); 
    // other stuff 
}; 

function addToolbarButton() { 
    var document = mediator.getMostRecentWindow("navigator:browser").document;  
    var navBar = document.getElementById("nav-bar"); 
    if (!navBar) { 
     return; 
    } 
    var btn = document.createElement("toolbarbutton"); 

    btn.setAttribute('type', 'button'); 
    btn.setAttribute('class', 'toolbarbutton-1'); 
    btn.setAttribute('image', data.url('img/icon16.png')); // path is relative to data folder 
    btn.setAttribute('orient', 'horizontal'); 
    btn.setAttribute('label', 'My App'); 
    btn.addEventListener('click', function() { 
     // use tabs.activeTab.attach() to execute scripts in the context of the browser tab 
     console.log('clicked'); 
    }, false) 
    navBar.appendChild(btn); 
} 
+0

¡Gracias, funcionó perfectamente! – Telanor

+1

Para obtener una explicación más detallada y una función para eliminar el botón de la barra de herramientas, consulte [mi publicación en el blog] (http://kendsnyder.com/posts/firefox-extensions-add-button-to-nav-bar) – kendsnyder

+1

Me acabo de dar cuenta, esta función solo se agregará para la ventana activa. Al abrir nuevas ventanas, el botón no estará allí. – dcolish

7

Este un elemento decorativo en la primera respuesta.

Si tiene las dificultades descritas por dcolish en su comentario a la respuesta de la parte superior añadir esto a main.js:

var tim = require("timers"); 
intervalId = tim.setInterval(timerFn,2000); 
function timerFn() { 
    var win = mediator.getMostRecentWindow('navigator:browser'); 
    if (win) 
     var document = win.document; 
    else 
     return; 
    var isBtn = document.getElementById('myappbutton-id'); 
    if (!isBtn) addToolbarButton(); 
} 

Es crudo, pero funciona.

EDIT: más fácil y limpio es:

var windows = require("windows").browserWindows; 
windows.on('open', function(window) { 
    addToolbarButton(); 
}); 

en mi Mac Firefox 15 elimina automáticamente el icono cuando se cierra una ventana. Entonces window.on('close', ...) no es necesario.

Cuestiones relacionadas