【问题标题】:Chrome extension keyboard shortcuts showing in wrong orderChrome 扩展程序键盘快捷键以错误的顺序显示
【发布时间】:2017-06-12 19:35:54
【问题描述】:

我正在开发一个 Chrome 扩展程序并在本地进行测试。我在扩展的清单中以标准方式建立了 10 个左右的键盘快捷键列表,如下所示:

"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) 中,但顺序出人意料:

我怎样才能让它们按照我希望它们的顺序排列?它们不应该按描述的字母顺序排列吗?在我添加前面的数字以强制执行我想要的顺序之前,它们似乎仍然与几个构建前的顺序相同(按描述大致按字母顺序排列)。

【问题讨论】:

  • 似乎chrome://extensions-frame/extensions.js,Chrome 中实际扩展 html 页面背后的 javascript,可能有一些答案。如果/当我发现任何东西时会更新。
  • 如果您确实编辑了问题和答案,以便他们有显示问题所在和解决方案的代码,请联系我(在评论中包括 @Makyen),我很乐意问题和答案明确后投票。
  • 其实,CWS 确实有未上市和私人出版。
  • @DanielHerr 确实如此,但据我所知,您要么必须将现有的已发布版本设置为不公开/私有,要么创建一个全新的应用程序条目来测试它。您不能私下测试商店中已有扩展的新草稿版本。

标签: javascript google-chrome-extension


【解决方案1】:

事实证明,显示快捷方式的顺序是基于清单文件中指定的内部命令名称,而不是描述。我花了一段时间才意识到,但是如果您查看我给出命令的变量名称并按字母顺序对它们进行排序,它与屏幕截图中的顺序一致。

为了解决这个问题,我只是简单地在命令名称前加上数字,如下所示:

"01-mute-all":
{ ... },
"02-unmute-all":
{ ... },
"03-unmute-current":
{ ... },
"04-mute-others":
{ ... },
etc.

虽然我认为 Chrome 中的这种行为很愚蠢(它将后端变量名称链接到前端外观),但至少它是可预测的。

我已在此处提交了功能请求: https://bugs.chromium.org/p/chromium/issues/detail?id=732578

【讨论】:

  • 如果您想查看 Chrome 内部代码从清单文件中读取命令的顺序,请导航至 chrome://extensions/configureCommands,打开控制台并运行 chrome.developerPrivate.getExtensionInfo('YOUR EXTENSION ID', function(result) { console.log(result.commands) } );
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
相关资源
最近更新 更多