javascript - 如果扩展程序使用了默认浏览器快捷方式,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 上找到完整的源代码(它非常小)。
解决方案
如果不为其他操作阻止选定的快捷方式,则无法使用(感谢 wOxxOm commands
)。manifest.json
但是,可以使用document.addEventListener
. 就我而言,它如下所示:
document.addEventListener("keydown", function(event) {
if (event.ctrlKey && event.code === 'KeyZ') {
undo();
}
});
不幸的是,默认情况下它不支持快捷方式自定义,就像commands
方式一样,但它可以工作。
推荐阅读
- angular - Angular 与服务器发送事件
- python - django queryset 聚合计数计数错误的事情
- c# - 已收到 UWP Onrequest 的 Appservice
- java - GWT 材料。在表头中添加 InlineSearch
- mysql - MySQL缓存结果?
- javascript - 使用 html 通过来自 firebase 数据库的 url 显示图像
- mysql - 如果任何行中的字段 X 具有值 Y 则忽略 else group results by GROUP BY in mysql without subquery
- java - 当公共池不支持并行级别 >= 2 时,让 CompletableFuture 为任务创建单独线程的意图
- javascript - 如何处理我的登录页面 PHP 的重定向
- javascript - 在搜索的特定索引处使用 .replace() 的 Javascript