Доступ к "медиа-ключам" на вкладке браузера
Есть ли способ получить доступ к "медиа-ключам" с помощью Javascript из вкладки/окна браузера?
Меня в основном интересует решение google chrome.
Используя следующий код, похоже, для медиа-ключей не создается событие:
<html>
<body onKeyDown="showKeyCode(event)">
<script type="text/javascript">
function showKeyCode(event) {
alert(event.keyCode);
}
</script>
</body>
</html>
Я что-то упустил? Могу ли я лучше с расширением Google Chrome?
Обновление: для решения этой проблемы. Я создал следующие инструменты:
Ответы
Ответ 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.