3

JavaScriptを使ってHTMLページの "control"キーを押したときを知りたいです。Javascriptで "control" keydown pressイベントをキャプチャする

次のコードでは、 "CTRL UP"は期待どおりに表示されますが、でもなどの別のキーを押した場合にのみ、 "CTRL DOWN"が表示されます。 "シフト"。

<html> 
<head> 
<script type="text/javascript"> 
window.addEventListener("keyup", function(event) { 
    // Bind to both command (for Mac) and control (for Win/Linux) 
    if (event.ctrlKey) { 
    console.log("CTRL UP"); 
    } 
}, false); 

window.addEventListener("keydown", function(event) { 
    // Bind to both command (for Mac) and control (for Win/Linux) 
    if (event.ctrlKey) { 
    console.log("CTRL DOWN"); 
    } 
}, false); 

</script> 
</head> 
<body> 
Ctrl Demo 
</body> 
</html> 

Ctrlキーを押したままにしているときに、「CTRL DOWN」キーイベントを期待通りに機能させる方法はありますか?

注:これはGoogle Chrome拡張機能で動作するようにしようとしています。そのため、Chrome固有のAPIやテクニックを使用してこの作業を行うと問題はありません。私はUbuntu上でGoogle Chrome 15.0.874.83ベータ版を使用しています。

+0

それはJSに発生しませんOSレベルでこのキーのリスナーを持っているいくつかのプログラムの実行がある場合。 – serg

答えて

16

次のjQueryと同じように、あなたのコードは私にとって役に立ちます。そのブロックの処理とダイアログが起動しているときに発生する任意のキーの状態の変化を見ることはありませんので(クローム)は、アラートを使用して

$(window).keydown(function(e){ 
    if (e.ctrlKey) 
     console.log('Control Down'); 
}); 

少しぎこちないです。心の中でクマがaddEventListenerがIE < 9でサポートされていないことが、私は、(あなただけの独自に押されはCtrlキーを検出したい場合は、次のように動作しますconsole.info/log/debug

+0

何を言っているのかわからない、それは私のために働いていない。 Ctrlキーを押しながら他のキーを押すと、ログに "CTRL UP"メッセージしか表示されません。 – oneself

+0

これは正解ではありません。下記を参照してください。 – mgsloan

8

を使用することをお勧めしますあなたの代わりにattachEventまたはonkeydownを使用する必要があると思います):

window.addEventListener("keydown", function(event) { 
    // Bind to both command (for Mac) and control (for Win/Linux) 
    if (event.keyCode == 17) { 
     alert("Ctrl"); 
    } 
}, false); 
関連する問題