附加组件栏
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 开发者附加组件栏