概念和用法
借助 Commands API,扩展程序开发者可以定义特定命令,并将其绑定到默认组合键。扩展程序接受的每个命令都必须在扩展程序的清单中声明为 "commands"
对象的属性。
属性键将用作命令的名称。命令对象可以具有两个属性。
manifest.json中配置方式
{
"name": "My extension",
...
"commands": {
"run-foo": {
"suggested_key": {
"default": "Ctrl+Shift+Y",
"mac": "Command+Shift+Y"
},
"description": "Run \"foo\" on the current page."
},
"_execute_action": {
"suggested_key": {
"windows": "Ctrl+Shift+Y",
"mac": "Command+Shift+Y",
"chromeos": "Ctrl+Shift+U",
"linux": "Ctrl+Shift+J"
}
}
},
...
}
suggested_key
可选属性,用于声明命令的默认键盘快捷键。如果省略,该命令将解除绑定。此属性可以接受字符串或对象值。
字符串值:用于指定应在所有平台中使用的默认键盘快捷键。
借助对象值,扩展程序开发者可以为每个平台自定义键盘快捷键。提供平台专用快捷方式时,有效的对象属性包括
default
、chromeos
、linux
、mac
和windows
。如需了解更多详情,请参阅组合键要求。
description
用于为用户提供命令用途的简短说明的字符串。此字符串会显示在扩展程序键盘快捷键管理界面中。标准命令必须包含说明,而操作命令会忽略说明。
键组合要求
扩展程序命令快捷方式必须包含
Ctrl
或Alt
。
- 修饰符不能与媒体键结合使用。
在 macOS 上,
Ctrl
会自动转换为Command
。
如需在 macOS 上使用 Ctrl 键,请在定义
"mac"
快捷方式时将Ctrl
替换为MacCtrl
。将
MacCtrl
用于其他平台会导致出现验证错误,并会阻止该扩展程序安装。
Shift
是所有平台上的可选修饰符。
Search
是 ChromeOS 独有的可选修饰符。某些操作系统和 Chrome 快捷方式(例如窗口管理)始终优先于扩展程序命令快捷方式,因此无法被覆盖。
常用方法
快捷键执行监听
在 Service Worker 中,您可以使用 onCommand.addListener
将处理程序绑定到清单中定义的每个命令。例如:
chrome.commands.onCommand.addListener((command) => {
console.log(`Command: ${command}`);
});
获取所有快捷键设置
chrome.commands.getAll(
callback?:
function,
)
注意:
ChromeOS 不支持全局快捷键设置。
全局命令需要在manifest.json 配置上 "global":true,同时键盘快捷键建议仅限
Ctrl+Shift+[0..9]
。这是一种保护措施,可最大限度地降低覆盖其他应用中快捷键的风险,因为例如,如果允许将Alt+P
设为全局快捷键,那么用于打开打印对话框的键盘快捷键可能无法在其他应用中正常使用。
最终用户可以使用 chrome://extensions/shortcuts
提供的界面,随意将全局命令重新映射到其首选组合键。
{
"name": "My extension",
...
"commands": {
"toggle-feature-foo": {
"suggested_key": {
"default": "Ctrl+Shift+5"
},
"description": "Toggle feature foo",
"global": true
}
},
...
}
多个扩展程序快捷键冲突问题
如果某个扩展程序尝试注册的快捷方式已被其他扩展程序使用,则第二个扩展程序的快捷方式将无法按预期注册。您可以通过预测这种可能性并在安装时检查是否发生碰撞来提供更强大的最终用户体验。
最大数量限制
一个扩展程序可以有多个命令,但最多可指定 4 个建议的键盘快捷键。用户可以通过
chrome://extensions/shortcuts
对话框手动添加更多快捷方式。
参考文档
以下是关于chrome扩展程序开发的API参考文档,希望对你有所帮助
https://developer.chrome.com/docs/extensions/reference/api
chrome.* APIs - chrome插件中文开发文档(非官方)
最后来个美女结尾吧。