chrome.commands 中的括号出现“无效值”错误

Vla*_*lav 4 google-chrome-extension

我需要热键Alt + ]Alt + [. 我有manifest.json喜欢:

{
    ...
    "commands": {
        "nextTrack": {
            "suggested_key": {
                "default": "Alt+]"
            },
            "description": "Next track"
        },
        "previousTrack": {
            "suggested_key": {
                "default": "Alt+["
            },
            "description": "Previous track"
        },
        "toggle": {
            "suggested_key": {
                "default": "Alt+P"
            },
            "description": "Toggle pause"
        }
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我启用我的扩展时,我得到:

Could not load extension from '~/project'. 
Invalid value for 'commands[1].default': Alt+].
Run Code Online (Sandbox Code Playgroud)

该热键的使用方法是什么?

Rob*_*b W 5

只有大写字母 (AZ) 和数字 (0-9) 才是有效值,您可以通过查看API的源代码chrome.commands看到。

如果您想使用其他字符,请在绑定事件的每个页面中注入内容脚本keydown

document.addEventListener('keydown', function(event) {
    if (!event.ctrlKey && event.altKey && event.which === 80/*P*/) {
        // Dispatch a custom message, handled by your extension
        chrome.runtime.sendMessage('Alt+P');
    }
}, true); // <-- True is important
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点

  • 键盘焦点必须位于激活内容脚本的页面内。如果您位于开发人员工具、多功能栏等内部,则快捷方式将失败。
  • 即使您使用<all_urls>匹配模式,它也无法在非 http(s) / file / ftp(s) 方案(例如chrome:data:chrome-extension:about:Chrome Web store)上工作。
  • [如果键盘布局不支持字符或使用不同的键代码,则在检测字符时可能会遇到问题。
  • 没有内置支持自定义此快捷方式(作为用户,访问chrome://extensions/,滚动到底部并单击“配置命令”以更改扩展程序的快捷方式)。

我建议选择不同的快捷方式,或者更改扩展程序的控制方式(例如,通过页面/浏览器操作弹出窗口)。