命令
类型 | 对象 |
---|---|
必填 | 否 |
清单版本 | 2 或更高 |
示例 |
json
|
使用commands
键为你的扩展定义一个或多个键盘快捷键。
每个键盘快捷键都使用名称、按键组合和描述进行定义。在扩展的 manifest.json
中定义命令后,可以使用 commands
JavaScript API 侦听其关联的按键组合。
语法
commands
键是一个对象,每个快捷键都是它的属性。属性的名称是快捷键的名称。
每个快捷键的值都是一个对象,最多包含 2 个属性
suggested_key
:激活快捷键的按键组合。description
:描述快捷键的字符串;即它执行的操作。
suggested_key
属性是一个对象,具有以下任何属性(全部为字符串)
"default"
"mac"
"linux"
"windows"
"chromeos"
"android"
"ios"
每个属性的值是该平台上命令的键盘快捷键,作为包含用“+
”分隔的键的字符串。"default"
的值用于所有未明确列出的平台。
例如
"commands": {
"toggle-feature": {
"suggested_key": {
"default": "Alt+Shift+U",
"linux": "Ctrl+Shift+U"
},
"description": "Send a 'toggle-feature' event to the extension"
},
"do-another-thing": {
"suggested_key": {
"default": "Ctrl+Shift+Y"
}
}
}
此 JSON 定义了 2 个快捷键
-
"toggle-feature"
,在 Linux 上使用 Ctrl + Shift + U 访问,在所有其他平台上使用 Alt + Shift + U 访问。 -
"do-another-thing"
,在所有平台上使用 Ctrl + Shift + Y 访问。
然后,你可以使用如下代码侦听 "toggle-feature"
命令
browser.commands.onCommand.addListener((command) => {
if (command === "toggle-feature") {
console.log("Toggling the feature!");
}
});
特殊快捷键
有 4 个具有默认操作的特殊快捷键,对于这些快捷键,commands.onCommand
事件不会触发
_execute_browser_action
:类似于单击使用browserAction
创建或在manifest.json
键的 browser_action 中指定的 工具栏按钮。_execute_action
:类似于单击使用action
创建或在manifest.json
键的 action 中指定的 工具栏按钮。_execute_page_action
:类似于单击使用pageAction
创建或在manifest.json
键的 page_action 中指定的 地址栏按钮。_execute_sidebar_action
:打开在 sidebar_actionmanifest.json
键中指定的扩展 侧边栏。
这些特殊快捷键的可用性因清单版本和浏览器而异,如下所示
清单 V2 | 清单 V3 | |
---|---|---|
_execute_browser_action |
是 | 否 |
_execute_action |
否 | 是 |
_execute_page_action |
是 | 仅限 Firefox |
_execute_sidebar_action |
仅限 Firefox | 仅限 Firefox |
注意:如果用户更改了 _execute_browser_action
命令的快捷键,则当扩展从清单 V2 迁移到 V3 时,它会自动迁移到 _execute_action
命令。此功能在 Chrome 111 和 Firefox 127 中实现。
例如,此 JSON 定义了一个单击扩展浏览器操作的按键组合
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+Shift+Y"
}
}
}
快捷键值
快捷键有两种有效格式:按键组合或媒体键。
按键组合
注意:在 Mac 上,"Ctrl"
被解释为 "Command"
,因此,如果你确实需要 "Ctrl"
,请指定 "MacCtrl"
。
按键组合必须包含 2 或 3 个键
- 修饰键(必填,功能键除外)。可以是以下任何一个:
"Ctrl"
、"Alt"
、"Command"
或"MacCtrl"
。 - 辅助修饰键(可选)。如果提供,则必须是
"Shift"
或(对于 Firefox ≥ 63)"Ctrl"
、"Alt"
、"Command"
或"MacCtrl"
中的任何一个。不能与用作主要修饰键的修饰键相同。 - 键(必填)。可以是以下任何一个
- 字母
A
–Z
- 数字
0
–9
- 功能键
F1
–F12
Comma
、Period
、Home
、End
、PageUp
、PageDown
、Space
、Insert
、Delete
、Up
、Down
、Left
、Right
- 字母
然后,键将作为包含以上列出的一组键值的字符串给出,这些键值按顺序用“+
”分隔。例如,"Ctrl+Shift+Z"
。
如果按键组合已被浏览器(如 "Ctrl+P"
)或现有附加组件使用,则无法覆盖它。你可以定义它,但当用户按下按键组合时,你的事件处理程序将不会被调用。
媒体键
或者,快捷键可以指定为以下媒体键之一
"MediaNextTrack"
"MediaPlayPause"
"MediaPrevTrack"
"MediaStop"
更新快捷键
可以通过 commands.update()
更新快捷键。用户还可以通过 Firefox 中 about:addons
的“管理扩展快捷键”选项更新快捷键,如 此视频 中所示。在 Chrome 中,用户可以在 chrome://extensions/shortcuts
中更改快捷键。
示例
定义单个键盘快捷键,仅使用默认按键组合
"commands": {
"toggle-feature": {
"suggested_key": {
"default": "Ctrl+Shift+Y"
},
"description": "Send a 'toggle-feature' event"
}
}
定义两个键盘快捷键,其中一个具有特定于平台的按键组合
"commands": {
"toggle-feature": {
"suggested_key": {
"default": "Alt+Shift+U",
"linux": "Ctrl+Shift+U"
},
"description": "Send a 'toggle-feature' event"
},
"do-another-thing": {
"suggested_key": {
"default": "Ctrl+Shift+Y"
}
}
}
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。