首页 > 解决方案 > 如果扩展程序使用了默认浏览器快捷方式,Chrome 会阻止它们

问题描述

我正在编写一个 Chrome 扩展程序,用于取消意外的视频倒带。我Ctrl + Z用作取消的最常见快捷方式。该扩展程序运行良好,它对快捷方式做出反应,它按照用户输入的预期执行操作。

问题是它Ctrl + Z变成了特定于扩展的快捷方式。它仅用作我的扩展的命令。例如,它不会取消整个 Chrome 中文本区域的输入,不仅在网页上,而且在地址栏上也是如此。

虽然我知道这种行为是为了避免歧义,但我希望该扩展程序及其快捷方式仅在 YouTube 上有效,因为该扩展程序只能访问其页面。

这是我的部分manifest.json

"content_scripts":
  [
    {
          "matches": ["*://*.youtube.com/*"],
          "js": ["contentscript.js"],
          "all_frames": true,
          "run_at": "document_idle"
    }
  ],
  "permissions": ["*://*.youtube.com/*"],

我只想Ctrl + Z在 YouTube 页面上用作扩展快捷方式,而在其他页面上将其用作默认取消快捷方式。不幸的是,我还没有找到解决方案。有什么解决方法可以做到这一点吗?

如果您需要更多代码示例,您可以在 GitHub 上找到完整的源代码(它非常小)。

标签: javascriptgoogle-chromegoogle-chrome-extension

解决方案


如果不为其他操作阻止选定的快捷方式,则无法使用(感谢 wOxxOm commands)。manifest.json

但是,可以使用document.addEventListener. 就我而言,它如下所示:

document.addEventListener("keydown", function(event) {
    if (event.ctrlKey && event.code === 'KeyZ') {
        undo();
    }
});

不幸的是,默认情况下它不支持快捷方式自定义,就像commands方式一样,但它可以工作。


推荐阅读