2010-09-02 36 views
16

有没有一种方法可以在浏览器选项卡/窗口中使用JavaScript访问“媒体密钥”?从浏览器选项卡访问“媒体密钥”

我主要对google chrome解决方案感兴趣。

使用下面的代码,似乎没有成为媒体键生成一个事件:

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

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

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

我缺少的东西?我可以使用Google Chrome扩展程序做得更好吗?

更新:来解决这个问题,我制作了以下工具:

+0

你的意思是改变系统音量,静音等的键盘按键? (如果是这样的话,我希望并期望浏览器中的javascript无法访问该内容;看起来这样会导致一些相当邪恶的漏洞利用。) – 2010-09-02 19:01:00

+0

@JacobM:是的。关于开发潜力:我不确定这里有什么关切。我正在讨论像任何其他密钥一样拦截“keydown”事件。你关心什么? – jldupont 2010-09-02 19:04:53

+0

哦,我以为你的意思是从JavaScript内部触发这些功能。拦截“keydown”似乎不是问题。 – 2010-09-02 19:06:48

回答

4

关于你是否能做到比Chrome扩展更好:不,你不能 - 我做了一个内容脚本的网站,并在OS X 10.7的Chrome 16的当前稳定版本中运行它。该脚本很简单:

console.log('Content script loading'); 

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

它表明没有事件触发后,播放/暂停,快进,静音,音量减小或卷起来键

有趣的是未使用的F5键生成一个键码,所以如果你愿意,你可以用它作为替代。

+0

请参阅我对上述问题的“更新”。 – jldupont 2012-02-07 02:08:27

+1

@jldupont有趣的是:安装一个本地应用程序来捕获按键,并使用它来与扩展的服务器进行通信。对于最终用户来说,F5选项显然不像正确的播放/暂停那样简洁,但对于开发人员来说实施起来却不太方便。希望有一天,他们会给我们适当的访问! – mikemaccana 2012-02-08 09:41:21

6

下面是从微软list of key codes;它们包括诸如“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> 
+0

虽然我在Chrome/Linux上没有这样的运气...... – jldupont 2010-09-02 19:16:49

+0

啊;我在Chrome/Windows上尝试过。是的,就像我说的,这可能是特定于操作系统的。你在Linux上没有获得keydown事件吗?还是你获得了不同的密钥? – 2010-09-02 19:24:05

+1

根本没有事件发生。 – jldupont 2010-09-02 19:29:29