Javascript Chrome扩展键盘快捷键按错误顺序显示
我正在开发一个Chrome扩展并在本地进行测试。我在扩展的清单中以标准方式建立了大约10个键盘快捷键,如下所示:Javascript Chrome扩展键盘快捷键按错误顺序显示,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在开发一个Chrome扩展并在本地进行测试。我在扩展的清单中以标准方式建立了大约10个键盘快捷键,如下所示: "commands": { "mute-all": { "description": "1 - Toggle \"Mute All Tabs\"", "suggested_key": { "default": "Ctrl+Shift+A",
"commands":
{
"mute-all":
{
"description": "1 - Toggle \"Mute All Tabs\"",
"suggested_key":
{
"default": "Ctrl+Shift+A",
"mac": "Command+Shift+A"
}
},
"unmute-all":
{
"description": "2 - Toggle \"Unmute All Tabs\"",
"suggested_key":
{
"default": "Ctrl+Shift+Z",
"mac": "Command+Shift+Z"
}
},
"unmute-current":
{
"description": "3 - Toggle \"Always unmute current tab\"",
"suggested_key":
{
"default": "Ctrl+Shift+S",
"mac": "Command+Shift+S"
}
},
"mute-others":
{
"description": "4 - Toggle \"Always mute all other tabs\"",
"suggested_key":
{
"default": "Ctrl+Shift+X",
"mac": "Command+Shift+X"
}
},
"use-black-list":
{
"description": "5 - Toggle \"Use Black/White List\""
},
"viewed-list":
{
"description": "6 - Aoggle viewed list"
},
"add-domain":
{
"description": "7 - Add domain to viewed list"
},
"remove-domain":
{
"description": "8 - Remove domain from viewed list"
},
"add-page":
{
"description": "9 - Add page to viewed list"
},
"remove-page":
{
"description": "10 - Remove page from viewed list"
},
"manual-override":
{
"description": "11 - Toggle manual override un/mute for current tab"
}
}
它们显示在Chrome的扩展键盘快捷菜单中(chrome://extensions/configureCommands),但顺序出乎意料:
我怎样才能让他们按照我想要的顺序来做呢?它们不应该按其描述的字母顺序排列吗?在我添加前面的数字以尝试强制执行所需的顺序之前,它们似乎仍然与几次构建之前的顺序相同(按描述大致按字母顺序排列)。结果是,显示的快捷方式的顺序基于清单文件中指定的内部命令名,而不是描述。我花了一段时间才意识到这一点,但如果你看看我给命令的变量名,并按字母顺序对它们排序,它与屏幕截图中的顺序相匹配 为了解决这个问题,我只在命令名前面加上如下数字:
"01-mute-all":
{ ... },
"02-unmute-all":
{ ... },
"03-unmute-current":
{ ... },
"04-mute-others":
{ ... },
etc.
虽然我认为Chrome中的这种行为很愚蠢(它将后端变量名链接到前端外观),但至少它是可以预测的
我在这里提交了一个功能请求:
似乎
chrome://extensions-frame/extensions.js
,Chrome中实际扩展html页面背后的javascript,可能有一些答案。如果/当我发现任何问题时,将进行更新。如果您编辑问题和答案,使其具有显示问题和解决方案的代码,请ping我(在评论中包括@Makyen
),因为我很乐意在问题和答案明确后进行投票。实际上,CWS确实有未列出和私有发布。@DanielHerr有,但据我所知,您要么必须将现有发布版本设置为未列出/私有,要么创建一个全新的应用程序条目来测试它。您不能私下测试商店中已存在的扩展的新草稿版本。如果您想查看Chrome内部代码从清单文件读取命令的顺序,请导航到chrome://extensions/configureCommands
,打开控制台并运行chrome.developerPrivate.getExtensionInfo('YOUR EXTENSION ID',function(result){console.log(result.commands)});