2010-09-02 106 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

相關問題