地址栏按钮
通常来说的 page action,是添加到浏览器地址栏中的按钮。用户通过点击这个按钮与你的扩展进行交互。
地址栏按钮(Page actions)和工具栏按钮(browser actions)
地址栏按钮 (或 page action) 与工具栏按钮 (或 browser action) 非常相似。
其不同之处为:
-
位置:
- 地址栏按钮是显示在浏览器的地址栏内;
- 工具栏按钮不是显示在地址栏内,而是在浏览器的工具栏上。
-
可见性:
- 地址栏按钮默认是隐藏的(尽管可以通过 manifest 中“show_matches 和 hide_matches 来改变),而你可以在特定 tabs 中调用 pageAction.show() 和 pageAction.hide() 来显示或隐藏它。
- 工具栏按钮总是可见的。
当动作(行为)与当前页面关联时,使用地址栏按钮,而当动作(行为)与浏览器相关或与多个页面相关时使用工具栏按钮。例如:
类型 | 书签动作 | 内容动作 | 标签操作 |
---|---|---|---|
page action | 将本页面保存到书签 | Reddit enhancement | Send tab |
browser action | 显示所有书签 | 使能 ad-blocking | 同步所有打开的标签 |
定义地址栏按钮
你可以在 manifest.json 中使用 page_action 键定义地址栏按钮的属性:
json
"page_action": {
"browser_style": true,
"default_icon": {
"19": "button/geo-19.png",
"38": "button/geo-38.png"
},
"default_title": "Whereami?"
}
仅 default_icon 是强制(必需)的。
有两种方式定义地址栏按钮:带 popup 窗口和无 popup 窗口。如果你没有指定一个 popup,则当用户点击此按钮时,事件被派送到使用pageAction.onClicked侦听器的扩展:
js
browser.pageAction.onClicked.addListener(handleClick);
如果你指定了一个 popup,则点击事件不被派送,在用户点击按钮时显示 popup。用户可以与 popup 进行交互,并且当用户点击 popup 以外区域时,popup 自动关闭。参见Popup可获得创建和管理 popups 更详细内容。
注意你的扩展只能有一个地址栏按钮。
通过使用pageAction API,你可以以编程方式修改地址栏按钮的任何属性。
Icons
如何创建用于地址栏按钮的 ICONS 的详细内容,请参见Photon Design System文档中的Iconography节。
示例
GitHub 上的 webextensions-examples 库中包括了实现无 popup 地址栏按钮的例子 chill-out 。