3

クローム (52):

Caps Lock をオンにすると、キーダウンのみが発生します (keyUp または keyPress のイベントは発生しません)。

Caps Lock をオフにすると、キーアップのみが発生します (keyDown または keyPress のイベントは発生しません)。

ファイアフォックス (46):

Caps Lock のオンとオフの両方で keyDown イベントのみが発生します (keyUp または keyPress はありません)。

私はここでkeyCodesとイベントについて読んだhttp://www.quirksmode.org/js/keys.htmlとMDNはこちらhttps://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent /keyCode、 aaa およびここhttp://unixpapa.com/js/key.html

しかし、上記のリンクのいずれも、この奇妙な動作について言及していません。これは期待されていますか?もしそうなら、それを処理する簡単な方法はありますか?

4

2 に答える 2

3

はい、これは想定内です。

Chrome はCAPS ONkeydownを、オン/オフを長押しとして扱うため、Shiftキーを押したままにします。これにより、Caps On の動作がオンになり、離すとオフになります。こちらもCaps Lockボタン。Caps Lockをオンにすると、クロムは「オンにする」を として処理し、オフにする」keypressととして処理します。しかし、Firefox は、クロムが同じように処理する方法と比較すると、私には意味をなさないものとしてすべてを処理します。keyupkeydown

解決

の状態を取得するには、getModifierState()を使用する必要がありCaps Lockます。これは chrome と firefox でサポートされています。

それが役に立てば幸い!

$(function() {
  $(window).on("keydown", function(e){
    if (e.which === 20)
      console.log(e.originalEvent.getModifierState('CapsLock'))
  });
  $(window).on("keyup", function(e) {
    if (e.which === 20)
      console.log(e.originalEvent.getModifierState('CapsLock'))
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Focus here and press 'Caps Lock'

于 2016-09-27T04:57:56.257 に答える