附加组件栏

Firefox 4 移除了浏览器窗口底部的状态栏,取而代之的是一个位于窗口底部的新工具栏。这个新工具栏的 ID 是 "addon-bar",它是一个标准的 XUL <toolbar>;附加组件可以向其中插入内容,用户在自定义工具栏时也可以将其中的按钮拖入其中。这是附加组件栏与旧状态栏的主要区别:由于它是一个标准的工具栏,您现在可以将任何 XUL 元素放入其中。

注意:目前,包含了一个状态栏的兼容层,以便期望存在状态栏的附加组件仍能正常工作。

向附加组件栏添加元素

附加组件栏是一个 ID 为 "addon-bar" 的 XUL 工具栏。下面的代码定位最近使用的窗口,并向附加组件栏添加一个新项,该项使用 XUL <label> 元素显示文本 "Hello world!"。

js
// Find the most recently used window

var mediator = Components.classes[
  "@mozilla.org/appshell/window-mediator;1"
].getService(Components.interfaces.nsIWindowMediator);
var doc = mediator.getMostRecentWindow("navigator:browser").document;

// Get the add-on bar for that window

var addonBar = doc.getElementById("addon-bar");

// Construct the new toolbar item

var newItem = doc.createElement("toolbaritem");
var itemLabel = doc.createElement("label");

// Add the item to the toolbar and set its text label

newItem.appendChild(itemLabel);
addonBar.appendChild(newItem);
itemLabel.value = "Hello world!";

要只添加一次按钮,请创建一个布尔首选项来检查是否是首次运行。 例如

js
var firstRun = Services.prefs.getBoolPref("extensions.YOUREXT.firstRun");

var curVersion = "0.0.0";

if (firstRun) {
  Services.prefs.setBoolPref("extensions.YOUREXT.firstRun", false);
  Services.prefs.setCharPref("extensions.YOUREXT.installedVersion", curVersion);
  /* Code related to firstRun */
} else {
  try {
    var installedVersion = Services.prefs.getCharPref(
      "extensions.YOUREXT.installedVersion",
    );
    if (curVersion > installedVersion) {
      Services.prefs.setCharPref(
        "extensions.YOUREXT.installedVersion",
        curVersion,
      );
      /* Code related to upgrade */
    }
  } catch (ex) {
    /* Code related to a reinstall */
  }
}

如何为每个 Firefox 版本使用一个覆盖文件

要添加附加组件栏支持,同时保持与 Firefox 3.6 及更早版本的兼容性,需要使用两个覆盖文件。chrome.manifest 文件可以通过使用 清单标志 来指定由哪个 Firefox 版本使用哪个文件。

overlay chrome://browser/content/browser.xul chrome://myaddon/content/myaddon/overlay-old.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} appversion<4.0
overlay chrome://browser/content/browser.xul chrome://myaddon/content/myaddon/overlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} appversion>=4.0

注意:应用程序版本必须至少为 2 位数,否则将无法与 Gecko 1.8.0.13 和 1.8.1.5 之前的版本配合使用。

默认添加按钮

参见:默认添加按钮

外观差异

  • 由于浏览器不再占用大比例的栏位用于显示状态信息,整个区域都可以供附加组件使用。
  • 附加组件栏默认是空的且隐藏的;用户必须选择使其可见。
  • 如果一个无重启附加组件直接将自身安装到附加组件栏,并且该栏尚未可见,则该栏会自动变得可见。
  • 如果卸载一个无重启附加组件后,附加组件栏中的项目数量变为零,则该栏会自动隐藏。

另见