JavaScript检测播放/暂停键盘(虚拟)键

时间:2019-06-12 12:41:57

标签: javascript google-chrome media-player dom-events

偶然地,我只是按下了键盘上的播放/暂停(▶/❚❚)按钮(位于Lenovo keyboard Num Lock 上方的按钮,同时在未聚焦的标签页中播放YouTube视频。令我惊讶的是,YouTube视频立即暂停了。

现在,我尝试查找它的工作原理,但是我无法在互联网上找到任何内容来解释如何检测到像这样的按键。我尝试在控制台中运行subscribe,但是按“播放/暂停”按钮不会触发任何事件。另外,https://keycode.info/对此也没有提供任何帮助。我确实发现http://www.kbdedit.com/manual/low_level_vk_list.html列出了很多“虚拟键码”,其中确实包含onkeydown = function(e) {console.log(e)},这可能是我所按下的键,但是我没有找到任何方法来触发JS。

现在,我想指定该功能似乎在Firefox中不起作用,仅在Chrome中(据我测试)。可能它仍处于试验阶段,但我真的很想知道YouTube使用了什么系统来捕获此事件,即使当前未打开标签页(Chrome当时甚至没有聚焦)

PS:我在Ubuntu 18.04上经历过;例如,我不确定是否可以在Windows上使用。

2 个答案:

答案 0 :(得分:1)

Chrome对此负责(硬件媒体密钥处理),有关更多详细信息,请查看chrome:// flags /#hardware-media-key-handling

这里还有包含文档和演示的链接:https://www.chromestatus.com/feature/5639924124483584

答案 1 :(得分:1)

来自Google Chrome Media Session Samples

/* Media navigation Action handlers */

    navigator.mediaSession.setActionHandler('previoustrack', function() {
      console.log('> User clicked "Next Track" icon.');
    });

    navigator.mediaSession.setActionHandler('nexttrack', function() {
      console.log('> User clicked "Next Track" icon.');
    });

    navigator.mediaSession.setActionHandler('play', function() {
      log('> User clicked "Play" icon.');
      // Do something more than just playing audio...
    });

这些Chrome api在chrome 57+上可用。如果发现有Firefox等价物,我将更新此遮篷。