检测到键盘上的“下一曲目”按钮?

时间:2013-05-22 13:02:17

标签: javascript jquery keyboard keyboard-events

我希望能够检测到用户键盘上的“下一首曲目”,“上一曲目”和(适用时)“随机播放”按钮的时间。这甚至可能吗?谢谢!

3 个答案:

答案 0 :(得分:2)

实际上,现在可以使用浏览器提供的媒体会话功能来做到这一点。正常的键盘事件通常不支持键盘中的播放器控制按钮。 这是来自mozilla docs的示例:

if ('mediaSession' in navigator) {
  navigator.mediaSession.metadata = new MediaMetadata({
    title: 'Unforgettable',
    artist: 'Nat King Cole',
    album: 'The Ultimate Collection (Remastered)',
    artwork: [
      { src: 'https://dummyimage.com/96x96',   sizes: '96x96',   type: 'image/png' },
      { src: 'https://dummyimage.com/128x128', sizes: '128x128', type: 'image/png' },
      { src: 'https://dummyimage.com/192x192', sizes: '192x192', type: 'image/png' },
      { src: 'https://dummyimage.com/256x256', sizes: '256x256', type: 'image/png' },
      { src: 'https://dummyimage.com/384x384', sizes: '384x384', type: 'image/png' },
      { src: 'https://dummyimage.com/512x512', sizes: '512x512', type: 'image/png' },
    ]
  });

  navigator.mediaSession.setActionHandler('play', function() { /* Code excerpted. */ });
  navigator.mediaSession.setActionHandler('pause', function() { /* Code excerpted. */ });
  navigator.mediaSession.setActionHandler('seekbackward', function() { /* Code excerpted. */ });
  navigator.mediaSession.setActionHandler('seekforward', function() { /* Code excerpted. */ });
  navigator.mediaSession.setActionHandler('previoustrack', function() { /* Code excerpted. */ });
  navigator.mediaSession.setActionHandler('nexttrack', function() { /* Code excerpted. */ });
}

请注意,并非所有浏览器都支持此功能。

答案 1 :(得分:1)

如果你知道关键代码,你可以。虽然不是所有的键盘都有它,或者可能会有所不同。 (猜测)

通过执行此操作并按键来查看键码:

$(window).keydown( function(event){ console.log(event.keyCode); } );

当您拥有代码时,您可以在命中该键时处理该事件。

小提琴:http://jsfiddle.net/JyKMN/

答案 2 :(得分:1)

我似乎无法找到随机播放keyCode,但这可以捕捉快进和快退......必须有一种更好的方式来做你想做的事情而不是这个IMO。

$('#capture').on('keydown',function(e){
    switch (e.which) {
        case 176:
            alert('Fast Forward');
            break;
        case 177:
            alert('Rewind');
            break;
        default:
            alert('Neither FF or rewind was pressed');  
            }      
});

<强> Demo

相关问题