JavaScript でのキーボード入力で奇妙な動作に気付きました。ここで本当に明らかなことを見逃しているかもしれませんが、どのキーを同時に押すことが許可されているかについて何らかの規則がありますか?
次のように、ブール変数を使用して 4 つのキーのそれぞれの状態を保持しています。これにより、多くのキーを同時に押すことができます (ハードウェアが許可する)。
var up = false, left = false, right = false, space = false;
function keydown(e) {
if (e.keyCode == 32)
space = true;
if (e.keyCode == 38)
up = true;
if (e.keyCode == 37)
left = true;
if (e.keyCode == 39)
right = true;
}
function keyup(e) {
if (e.keyCode == 32)
space = false;
if (e.keyCode == 38)
up = false;
if (e.keyCode == 37)
left = false;
if (e.keyCode == 39)
right = false;
}
私が試した2台のマシンで、次のjsfiddleを使用すると、スペースを上下に同時に押すことができますが、スペースを上下に押すことはできません。これらの 2 台のマシンでは、Chrome、FF、および IE で同じことを行っています。3 台目のマシンでは問題なく動作し、4 つのキーすべてを同時に保持できます。
おそらくこれはハードウェアに関連していますが、私の主な質問は、左右のキーの操作に違いがあるのはなぜですか? 一貫性がないように見えますが、それには正当な理由があると確信しています。
(イベントを発生させるには、結果ペイン内をクリックする必要があります)