2014-01-04 3 views
3

Я использовал ниже код, чтобы автоматически добавлять кнопки панели инструментов в панель инструментов навигации под Firefox Australis.Как добавить кнопку панели инструментов для Firefox Australis

var buttonId = "toolbarbutton-toolbarbutton"; 
var navBar = document.getElementById("nav-bar"); 
var currentSet = navBar.currentSet; 

var curSet = currentSet.split(","); 
if (curSet.indexOf(buttonId) == -1) 
{ 
    navBar.insertItem(buttonId); 
    navBar.setAttribute("currentset", navBar.currentSet); 
    document.persist("nav-bar", "currentset"); 

    try 
    { 
     top.BrowserToolboxCustomizeDone(true); 
    } 
    catch (e) 
    { 

    } 
} 

Поскольку пользовательский интерфейс и модули изменены для Australis, код необходимо обновить. Как я могу добавить кнопку панели инструментов для правильного пути Australis?

ответ

2

Вы должны использовать CustomizableUI module:

try 
{ 
    Components.utils.import("resource:///modules/CustomizableUI.jsm"); 
    CustomizableUI.createWidget({ 
    id: "toolbarbutton-toolbarbutton", 
    defaultArea: "nav-bar", 
    removable: true, 
    label: "My button", 
    tooltiptext: "My tooltip text", 
    onClick: function() 
    { 
     alert("Clicked"); 
    } 
    }); 
} 
catch (e) 
{ 
    Components.utils.reportError(e); 

    // No such module? Try the old approach. 
    ... 
} 

Обратите внимание, что виджет больше не должен быть добавлен для каждого окна браузера, достаточно сделать это один раз. К сожалению, документация модуля практически не существует прямо сейчас, код выше был выведен из module's source code. Однако документация должна улучшиться.

Если это помогает, исходный код Adblock Plus содержит emulation of the CustomizableUI API для более старых версий Firefox. Однако это далеко не полный, он предназначен только для удовлетворения потребностей Adblock Plus.

+0

отлично, но я не могу добавить кнопку после того, как я удаляю ее из панели навигации 'removeWidgetFromArea (id)'. Могу ли я переключаться, если это возможно? – Xunshirine

+0

@Xunshirine: Вы используете метод addWidgetToArea (id, area, position) '(вам нужно запомнить позицию самостоятельно). –

Смежные вопросы