jld*_*ont 21 javascript browser google-chrome
有没有办法在浏览器选项卡/窗口中使用Javascript访问"媒体键"?
我主要对谷歌Chrome解决方案感兴趣.
使用以下代码,似乎没有为媒体键生成事件:
<html>
<body onKeyDown="showKeyCode(event)">
<script type="text/javascript">
function showKeyCode(event) {
alert(event.keyCode);
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?我可以使用Google Chrome扩展程序做得更好吗?
更新: 为了解决这个问题,我精心设计了以下工具:
tha*_*kis 17
从 Chrome 73 开始,明确支持媒体密钥,请参阅https://developers.google.com/web/updates/2019/02/chrome-73-media-updates
总之,您可以安装一个事件处理程序
navigator.mediaSession.setActionHandler('previoustrack', function() {
// User hit "Previous Track" key.
});
Run Code Online (Sandbox Code Playgroud)
上面的文档提供了一个很好的概述。
https://googlechrome.github.io/samples/media-session/有示例代码和演示。
https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_API有更详细的文档。
以下是Microsoft 的密钥代码列表 ; 它们包括诸如"VK_VOLUME_MUTE"之类的键.VK_VOLUME_MUTE的关键代码列为0xAD.0xAD是十进制是173.
当然,当我加载以下内容并按下键盘上的静音按钮时,报告的密钥代码为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>
Run Code Online (Sandbox Code Playgroud)
编辑:现在明确支持媒体键。下面的答案已被弃用。请参阅下面的@thakis 答案。
关于您是否可以比 Chrome 扩展做得更好:不,您不能 - 我已经为一个网站制作了一个内容脚本,并在 OS X 10.7 上的 Chrome 16 当前稳定版本中运行它。该脚本很简单:
console.log('Content script loading');
$("body").bind("keyup",function(event){
console.log(event.keyCode);
})
Run Code Online (Sandbox Code Playgroud)
并且显示后退、播放/暂停、前进、静音、音量减小或音量增大键没有触发任何事件。
有趣的是,未使用的 F5 键会生成一个键码,因此如果您愿意,您可以将其用作替代方案。
| 归档时间: |
|
| 查看次数: |
7176 次 |
| 最近记录: |