2011-04-06 25 views
6

'u kullanarak araç çubuklarını nasıl ekleyebilirim/değiştirebilirim Eklenti SDK'sının belgelerine şimdi birkaç kez baktım ve hayır araç çubuklarını nasıl oluşturabilirim veya değiştirebilirim mevcut olanlar. Eklenti çubuğu simgeleri oluşturma konusunda bir öğretici var ama istediğim değil. Eklenti SDK'sı bunu destekliyor mu? Eğer varsa, birisi bana bir örnek/öğreticiye bağlantı verebilir.Firefox: Eklenti SDK'sı (Jetpack)

+0

Araç çubuğu veya araç çubuğu düğmesi ister misiniz? – erikvold

+0

Yapmak istediğim, mevcut bir araç çubuğuna bir düğme eklemek, ancak Görünüm -> Araç Çubukları -> Özelleştir'e giderken yaptığınız gibi değil, bu araç çubuğunda istediğiniz şekilde konumlandırmama izin vermemek (Googlebar) Lite). Evet, bir düğme istiyorum, ancak bu menüden standart bir araç çubuğu öğesi yeterince iyi olmayacak. – Telanor

cevap

11

Bu benim için çalışıyor:

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

Teşekkürler, bu mükemmel çalıştı! – Telanor

+1

Daha uzun bir açıklama ve araç çubuğu düğmesini kaldırmak için bir işlev için, bkz. [Blog gönderim] (http://kendsnyder.com/posts/firefox-extensions-add-button-to-nav-bar) – kendsnyder

+1

Sadece fark ettim, Bu işlev sadece aktif pencere için eklenecektir. Yeni pencereleri açarken düğme orada olmayacak. – dcolish

7

ilk yanıt üzerindeki bu bir bezeme. Eğer üst yanıt verdiği yorumunda dcolish tarafından açıklanan zorluklar varsa

main.js bu ekleyin:

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(); 
} 

Bu ham ama çalışır.

DÜZENLEME: çok daha kolay ve daha temizdir: Bir pencereyi kapatırken Mac'im Firefox 15 günü

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

otomatik Simge kaldırır. Yani window.on('close', ...) gerekli değildir.