禁用 Youtube 快捷方式或其他解决方法
Disable Youtube shortcuts or another workaround
我一直在尝试让它发挥作用,并且已经搜索了我想出的所有关键字。
我正在构建一个 Chrome 扩展,它会在分散注意力的网站上打开一个模式,提示用户输入他在此网站上的意图。
可能还有更多站点会出现此问题,我目前只遇到过 youtube。
当用户输入内容时,youtube 快捷方式仍然处于活动状态并且输入字段可能会失去焦点。假设有人输入 'f',youtube 然后全屏显示视频/'k' youtube 开始或停止视频。
有没有办法禁用 youtube 快捷方式?或者其他解决方法,我没有想到?
模态框位于 shadowRoot 中,因此不会影响网站的样式。
事件分两个阶段调度:
- 捕获,其中事件通过其 DOM 树祖先从
window
传播到元素,
- 冒泡,事件从元素传播到
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=].
我一直在尝试让它发挥作用,并且已经搜索了我想出的所有关键字。
我正在构建一个 Chrome 扩展,它会在分散注意力的网站上打开一个模式,提示用户输入他在此网站上的意图。
可能还有更多站点会出现此问题,我目前只遇到过 youtube。
当用户输入内容时,youtube 快捷方式仍然处于活动状态并且输入字段可能会失去焦点。假设有人输入 'f',youtube 然后全屏显示视频/'k' youtube 开始或停止视频。
有没有办法禁用 youtube 快捷方式?或者其他解决方法,我没有想到?
模态框位于 shadowRoot 中,因此不会影响网站的样式。
事件分两个阶段调度:
- 捕获,其中事件通过其 DOM 树祖先从
window
传播到元素, - 冒泡,事件从元素传播到
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=].