2011-04-06 51 views
6

因此,我已经多次查看了附加SDK的文档,并且没有在哪里可以看到如何创建工具栏或修改现有的。他们有一个关于创建附加栏图标的教程,但那不是我想要的。附加SDK是否支持这个呢?如果是这样,有人可以将我链接到示例/教程。Firefox:如何使用附加SDK(Jetpack)添加/修改工具栏

+0

你想要一个工具栏或工具栏按钮吗? – erikvold 2011-04-07 17:19:48

+0

我想要做的是将一个按钮添加到现有的工具栏,但不是以同样的方式,你会去查看 - >工具栏 - >自定义,因为它不会让我把它放在这个工具栏中我想要的方式(Googlebar精简版)。所以是的,我想要一个按钮,但是该菜单中的标准工具栏项目不够好。 – Telanor 2011-04-07 18:09:02

回答

11

这个工作对我来说:

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

谢谢,完美的工作! – Telanor 2011-11-01 05:13:04

+1

有关更长的解释和删除工具栏按钮的功能,请参见[我的博客文章] – kendsnyder 2011-11-02 19:03:44

+1

我刚刚注意到,这个功能只会为活动窗口添加。当打开新窗口时,按钮不会在那里。 – dcolish 2012-02-12 03:15:47

7

这第一个答案的点缀。

如果你必须在dcolish他的评论描述顶端响应的困难将它添加到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(); 
} 

它的原油,但工程。

编辑: 更容易和更清洁是:

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

我的Mac上的Firefox 15关闭窗口时自动删除的图标。所以window.on('close', ...)是不需要的。

相关问题