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

时间:2013-04-16 10:09:43

标签: 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"
        }
    },
    ...
}

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

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

使用这些热键有什么方法?

1 个答案:

答案 0 :(得分:3)

只有大写字母(A-Z)和数字(0-9)才是有效值,您可以通过查看source code 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

此方法的缺点

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

我建议选择不同的快捷方式,或更改扩展程序的控制方式(例如,通过page / browser action弹出窗口。)