多くの関連する質問がありましたが、これは特に見つかりませんでした。Javascript:Keydownイベント:矢印キーのキーダウンイベントを防ぐ「上向き」矢印キー? (回答:キーボードゴースト)
私は矢印キー(37-40)のキーダウンイベントを待ち受けようとしていますが、矢印キーを特定の順序で使用すると、後続の矢印は「キーダウン」イベントを生成しません。
例: - ボックスこのページで http://blog.pothoven.net/2008/05/keydown-vs-keypress-in-javascript.html
- は、 ">ここに入力" をクリックします。
- を押したまま右矢印キー:右と上矢印キーを押したまま38
- にテーブルの更新、右矢印キーを押しを押しながら矢印キーを押したまま、テーブルの更新は39
- をキーコードします 左矢印キーを押したまま:私は同じことを行う代わりに、上矢印キーの矢印キーダウンを使用した場合に予想されるようにテーブルは更新
は、しかし、それは、作品はありません。
さらに、矢印キーの代わりにキーパッドを使用すると、期待どおりに機能します。
keydownイベントの通常の操作(イベントリスナーでfalseを返し、preventDefault()を呼び出す)のどちらも動作しないようにしていますが、動作は継続します。
私はそれが私のキーボードかもしれないと思っていましたが、それはノートパソコンと友人のマシンで発生します。
誰に何が起こっているかについての洞察はありますか?回避策に関する良いアイデアですか?
[編集] ここに私が意味するものの例があります。私は、これはすべてのブラウザでは動作しないかもしれません実現が、私はちょうど私のために何が起こっているかを実証し(W7にクロームにしても、マックOS 10.6.8上&サファリクロム)
<html>
<body>
<script>
var keysDown = {};
addEventListener("keydown", function(e) {
keysDown[e.keyCode] = true;
document.getElementById('latestKeydown').value=e.keyCode;
}, false);
addEventListener("keyup",function(e){
delete keysDown[e.keyCode];
}, false);
var loop = function(){
document.getElementById('upinput').value=keysDown[38];
document.getElementById('downinput').value=keysDown[40];
document.getElementById('leftinput').value=keysDown[37];
document.getElementById('rightinput').value=keysDown[39];
}
setInterval(loop,1);
</script>
Up: <input id="upinput" type=text size=10><br />
Down: <input id="downinput" type=text size=10><br />
Left: <input id="leftinput" type=text size=10><br />
Right: <input id="rightinput" type=text size=10><br />
Recent Keydown: <input id="latestKeydown" type=text size=10><br />
</body>
</html>
をするために私のラップトップ上で一緒にこれを投げましたまた、問題は次のとおりです。 A、S、D、F、Gを順番に押すと、新しいキーを保持するたびに最新のキーダウンが更新されます。
しかし、右矢印、上矢印、左矢印を押しても、左矢印キーの「Recent Keydown」は更新されません。
コードの一部を待ちます。 –
ようこそスタックオーバーフロー! –
* "キーボードが配線されているためにPCが理解できない" * oO –