14

根据我在 Google Chrome 中尝试在 manifest.json 文件中添加 5 个或更多时遇到的以下错误,我遇到了我认为最多允许 4 个 chrome.commands 的情况:

"Could not load extension from '[Extension Path]'. Too many commands specified for 'commands': The maximum is 4."

这个限制有什么特别的原因,或者有什么方法可以绕过它?

对于上下文:我目前正在开发一个扩展程序,该扩展程序将当前页面作为书签添加到基于特定热键的特定文件夹中,目前沿线ctrl+ alt+ 0ctrl+ alt+ 1,直到ctrl+ alt+ 9

4

2 回答 2

13

我查看了源代码并找出了以下代码行。

在extension_manifest_constants.cc中为错误消息声明的常量

const char kInvalidKeyBindingTooMany[] =
    "Too many commands specified for 'commands': The maximum is *.";

为extension.cc中的最大命令数声明的常量

// The maximum number of commands (including page action/browser actions) an
// extension can have.
const size_t kMaxCommandsPerExtension = 4;

extension.cc中的验证代码会查找以下检查

if (commands - > size() > kMaxCommandsPerExtension) { 
      * error = ErrorUtils::FormatErrorMessageUTF16(
        errors::kInvalidKeyBindingTooMany,
        base::IntToString(kMaxCommandsPerExtension));
        return false;
}

Google 开发人员将常量标记为 4,因此您现在不能添加超过 4 个命令。

解决方法:

为这个问题加注星标并寻找开发人员的回复,如果你真的想使用命令,你必须创建多个扩展,每个扩展都有 4 个命令集。

如果您需要更多信息,请与我们联系。

于 2012-12-22T07:18:23.577 回答
9

这是一个非常古老的问题,但我很难在任何地方找到信息,这个问题是我的一些搜索的顶级谷歌搜索结果,所以我将在这里添加一些信息。

尽管有错误的措辞,但您可以拥有任意数量的命令。这个错误实际上是指您可以拥有的“suggested_key”对象的数量。Chrome 的文档指定以下内容:

一个扩展可以有很多命令,但只能指定 4 个建议的键。

所以在你的清单中,虽然你可以指定额外的命令,但你只能给其中 4 个“suggested_key”对象

"commands": {
    "contains-suggested-key": {
        "suggested_key": {
            "default": "Ctrl+Shift+Y",
            "mac": "Command+Shift+Y"
        },
        "description": "Toggle feature foo"
      },
      "NO-suggested-key": {
          "description": "user must specify shortcut keys for this from the extensions page"
      }
}
于 2020-04-06T10:24:50.227 回答