禁用 Youtube 快捷方式或其他解决方法

Disable Youtube shortcuts or another workaround

我一直在尝试让它发挥作用,并且已经搜索了我想出的所有关键字。

我正在构建一个 Chrome 扩展,它会在分散注意力的网站上打开一个模式,提示用户输入他在此网站上的意图。

可能还有更多站点会出现此问题,我目前只遇到过 youtube。

当用户输入内容时,youtube 快捷方式仍然处于活动状态并且输入字段可能会失去焦点。假设有人输入 'f',youtube 然后全屏显示视频/'k' youtube 开始或停止视频。

有没有办法禁用 youtube 快捷方式?或者其他解决方法,我没有想到?

模态框位于 shadowRoot 中,因此不会影响网站的样式。

事件分两个阶段调度:

  1. 捕获,其中事件通过其 DOM 树祖先从 window 传播到元素,
  2. 冒泡,事件从元素传播到 window,默认阶段。

解决方案是在第一个调度目标 (window) 的第一阶段(捕获)注册一个侦听器,并停止事件,使其永远不会到达站点正在侦听的默认第二阶段。

window.addEventListener('keydown', stopPropagation, true);

function stopPropagation(e) {
  e.stopPropagation();
}

关闭对话框后,恢复站点的行为:

window.removeEventListener('keydown', stopPropagation, true);

P.S。在捕获阶段已经在 window 上注册监听器的站点上,您必须通过使用 "run_at": "document_start" 声明内容脚本来更早地附加监听器,并通过添加 window 取消其他监听器=17=].