2010-09-02 5 views
16

Existe-t-il un moyen d'accéder aux "touches multimédias" avec JavaScript depuis un onglet/une fenêtre du navigateur?Accès aux "touches multimédias" à partir de l'onglet du navigateur

Je suis principalement intéressé par une solution Google Chrome.

En utilisant le code suivant, il ne semble pas être un événement généré pour les touches multimédia:

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

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

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

Suis-je manque quelque chose? Pourrais-je faire mieux avec une extension Google Chrome?

Mise à jour: pour résoudre ce problème, je Crafted les outils suivants:

+0

Voulez-vous dire les touches du clavier pour modifier le volume du système, couper le son, etc.? (Si c'est le cas, j'espère et je m'attends à ce que javascript dans un navigateur n'ait pas accès à cela, semble que cela permettrait des exploits assez maléfiques.) –

+0

@JacobM: Oui ceux-là. A propos du potentiel d'exploitation: Je ne suis pas sûr de ce qui est préoccupant ici. Je parle d'intercepter l'événement "keydown" comme n'importe quelle autre clé. Quelle est votre préoccupation? – jldupont

+0

Oh, je pensais que vous vouliez dire déclencher ces fonctions depuis javascript. Intercepter "keydown" ne semble pas être un problème. –

Répondre

4

Quant à savoir si vous pourriez faire mieux qu'une extension Chrome: Non, vous ne pouvait pas - je l'ai fait un script de contenu pour un site, et l'exécuter dans le version stable actuelle de Chrome 16 sur Mac OS X 10.7. Le script est assez simple:

console.log('Content script loading'); 

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

Et il montre que aucun événement ne déclenche pour l'arrière, lecture/pause, avance, muet, volume ou le volume des clés. Intéressant, la clé F5 inutilisée génère un code clé, vous pouvez donc l'utiliser comme alternative si vous le souhaitez.

+0

Voir ma "mise à jour" à la question ci-dessus. – jldupont

+1

@jldupont Intéressant re: installation d'une application native pour intercepter les touches et utilisation de celle-ci pour communiquer avec un serveur pour l'extension.L'option F5 n'est évidemment pas aussi nette pour l'utilisateur final que la lecture/pause correcte, mais il s'agit moins de travail à mettre en œuvre pour le développeur. Espérons qu'un jour ils nous donneront un accès approprié! – mikemaccana

6

Voici un list of key codes de Microsoft; ils comprennent des clés telles que "VK_VOLUME_MUTE". Le code de clé pour VK_VOLUME_MUTE est répertorié comme 0xAD. 0xAD est décimal est 173.

Et bien sûr, quand je charge ce qui suit et appuie sur le bouton de sourdine de mon clavier, le code de clé signalé est 173. Donc, ils fonctionnent comme n'importe quelle autre clé; cela ne me surprendrait pas, cependant, si les codes clés sont spécifiques à Windows. Cela peut prendre quelques expérimentations.

<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

Je n'ai pas tellement de chance sur Chrome/Linux si ... – jldupont

+0

Ah; Je l'ai essayé sur Chrome/Windows. Oui, comme je l'ai dit, c'est probablement spécifique au système d'exploitation. Est-ce que vous n'obtenez pas d'événement keydown sur Linux, ou obtenez-vous un code différent? –

+1

aucun événement du tout. – jldupont

Questions connexes