【问题标题】:Disable Youtube shortcuts or another workaround禁用 Youtube 快捷方式或其他解决方法
【发布时间】:2022-01-15 15:45:17
【问题描述】:

我一直在努力让它工作一段时间,并且已经搜索了我想出的所有关键字。

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

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

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

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

Modal 位于 shadowRoot 内,因此不会影响网站的样式。

【问题讨论】:

    标签: typescript google-chrome google-chrome-extension browser keyboard-shortcuts


    【解决方案1】:

    一个事件分两个阶段分派:

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

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

    window.addEventListener('keydown', stopPropagation, true);
    
    function stopPropagation(e) {
      e.stopPropagation();
    }
    

    当您的对话框关闭时,恢复网站的行为:

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

    附:在捕获阶段已经在window 上注册侦听器的网站上,您必须通过使用"run_at": "document_start" 声明内容脚本并通过添加e.stopImmediatePropagation() 来取消window 上的其他侦听器来提前附加您的侦听器。

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多