Подтвердить что ты не робот

Доступ к "медиа-ключам" на вкладке браузера

Есть ли способ получить доступ к "медиа-ключам" с помощью Javascript из вкладки/окна браузера?

Меня в основном интересует решение google chrome.

Используя следующий код, похоже, для медиа-ключей не создается событие:

<html>
<body onKeyDown="showKeyCode(event)">
    <script type="text/javascript">

        function showKeyCode(event) {
            alert(event.keyCode);
        }

    </script>
</body>
</html>

Я что-то упустил? Могу ли я лучше с расширением Google Chrome?

Обновление: для решения этой проблемы. Я создал следующие инструменты:

4b9b3361

Ответ 1

Относительно того, можете ли вы сделать лучше, чем расширение Chrome: нет, вы не смогли - я создал контент script для сайта и запускал его в рамках текущей стабильной версии Chrome 16 на OS X 10.7. script достаточно прост:

console.log('Content script loading');

$("body").bind("keyup",function(event){
    console.log(event.keyCode);
})

И это показывает, что для прокрутки назад, воспроизведения/паузы, перемотки вперед, отключения звука, уменьшения громкости или увеличения громкости < запускаются никаких событий.

Интересно, что неиспользованный ключ F5 генерирует код ключа, поэтому вы можете потенциально использовать его в качестве альтернативы, если хотите.

Ответ 2

Здесь список кодов ключей от Microsoft; они включают такие ключи, как "VK_VOLUME_MUTE". key code для VK_VOLUME_MUTE указан как 0xAD. 0xAD - десятичное значение - 173.

И, конечно же, когда я загружаю следующее и нажимаю кнопку mute на моей клавиатуре, сообщение key code равно 173. Таким образом, они работают как любой другой ключ; это меня не удивило бы, если бы коды клавиш были специфичными для Windows. Это может занять некоторое время.

<html>
<body>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
    $(document).keydown(function(ev){
       alert(ev.keyCode);
    });
});
</script>

</body>
</html>

Ответ 3

Media Session API позволяет прослушивать события медиа-ключа в браузере:

navigator.mediaSession.setActionHandler('play', () => console.log('play'));
navigator.mediaSession.setActionHandler('pause', () => console.log('pause'));
navigator.mediaSession.setActionHandler('seekbackward', () => console.log('seekbackward'));
navigator.mediaSession.setActionHandler('seekforward', () => console.log('seekforward'));
navigator.mediaSession.setActionHandler('previoustrack', () => console.log('previoustrack'));
navigator.mediaSession.setActionHandler('nexttrack', () => console.log('nexttrack'));

К сожалению, похоже, что пока это реализовано только в Chrome.