3

我需要热键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"
        }
    },
    ...
}

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

Could not load extension from '~/project'. 
Invalid value for 'commands[1].default': Alt+].

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

4

1 回答 1

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

这种方法的缺点

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

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

于 2013-04-16T12:53:35.137 回答