2012-04-22 23 views
9

多くの関連する質問がありましたが、これは特に見つかりませんでした。Javascript:Keydownイベント:矢印キーのキーダウンイベントを防ぐ「上向き」矢印キー? (回答:キーボードゴースト)

私は矢印キー(37-40)のキーダウンイベントを待ち受けようとしていますが、矢印キーを特定の順序で使用すると、後続の矢印は「キーダウン」イベントを生成しません。

例: - ボックスこのページで http://blog.pothoven.net/2008/05/keydown-vs-keypress-in-javascript.html

  1. は、 ">ここに入力" をクリックします。
  2. を押したまま右矢印キー:右と上矢印キーを押したまま38
  3. にテーブルの更新、右矢印キーを押しを押しながら矢印キーを押したまま、テーブルの更新は39
  4. をキーコードします 左矢印キーを押したまま:私は同じことを行う代わりに、上矢印キーの矢印キーダウンを使用した場合に予想されるようにテーブル更新

は、しかし、それは、作品はありません。

さらに、矢印キーの代わりにキーパッドを使用すると、期待どおりに機能します。

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」は更新されません。

+1

コードの一部を待ちます。 –

+0

ようこそスタックオーバーフロー! –

+0

* "キーボードが配線されているためにPCが理解できない" * oO –

答えて

3

私はこのことについては話すことができませんが、https://stackoverflow.com/a/4177260/562209によれば、修飾キーと非修飾キーの同時押下で作業している場合を除き、複数キーを押すと "PCはキーボードが配線されているために理解してください。 "

+3

ここにその問題の良い説明があります:http://www.microsoft.com/appliedsciences/antighostingexplained.mspx – user123444555621

+0

ガー:(ありがとう、皆さん、これはおそらく原因と思われます。 – ElleryTheJones

関連する問題