Итак, я несколько раз просматривал документацию для Add-on SDK и нигде не могу увидеть, как создавать панели инструментов или изменять существующие. У них есть учебник по созданию иконок на панели надстроек, но это не то, что мне нужно. Поддерживает ли Add-on SDK это? Если это так, может ли кто-нибудь связать меня с примером/учебником.
Firefox: как добавить/изменить панели инструментов с помощью Add-on SDK (Jetpack)
comment
вам нужна панель инструментов или кнопка панели инструментов?
- person erikvold   schedule 07.04.2011
comment
Что я хочу сделать, так это добавить кнопку на существующую панель инструментов, но не так, как если бы вы перешли в «Просмотр» -> «Панели инструментов» -> «Настроить», поскольку это не позволит мне расположить ее на этой панели инструментов так, как я хочу (Googlebar Lite ). Так что да, я хочу кнопку, но стандартного элемента панели инструментов из этого меню будет недостаточно.
- person Telanor   schedule 07.04.2011
Ответы (2)
Это работает для меня:
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);
}
person
kendsnyder
schedule
31.10.2011
Для более подробного объяснения и функции удаления кнопки панели инструментов см. мой пост в блоге
- person kendsnyder; 02.11.2011
Я только что заметил, что эта функция будет добавляться только для активного окна. При открытии новых окон кнопки не будет.
- person dcolish; 12.02.2012
Это украшение на первый ответ.
Если у вас есть трудности, описанные 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', ...)
не нужен.
person
semiomant
schedule
17.10.2012