如何为Firefox Australis添加工具栏按钮

时间:2014-01-04 09:38:17

标签: firefox firefox-addon

我使用下面的代码在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添加工具栏按钮?

1 个答案:

答案 0 :(得分: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的需求。