附加元件欄
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 之前的版本配合使用。
預設新增按鈕
參見:預設新增按鈕
外觀差異
- 由於瀏覽器不再佔用大比例的欄位用於顯示狀態資訊,整個區域都可以供附加元件使用。
- 附加元件欄預設是空的且隱藏的;使用者必須選擇使其可見。
- 如果一個無重啟附加元件直接將自身安裝到附加元件欄,並且該欄尚未可見,則該欄會自動變得可見。
- 如果解除安裝一個無重啟附加元件後,附加元件欄中的專案數量變為零,則該欄會自動隱藏。
另見
- Mike Kaply 撰寫的 Firefox 4 開發者附加元件欄