附加元件欄

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 之前的版本配合使用。

預設新增按鈕

參見:預設新增按鈕

外觀差異

  • 由於瀏覽器不再佔用大比例的欄位用於顯示狀態資訊,整個區域都可以供附加元件使用。
  • 附加元件欄預設是空的且隱藏的;使用者必須選擇使其可見。
  • 如果一個無重啟附加元件直接將自身安裝到附加元件欄,並且該欄尚未可見,則該欄會自動變得可見。
  • 如果解除安裝一個無重啟附加元件後,附加元件欄中的專案數量變為零,則該欄會自動隱藏。

另見