2011-02-01 4 views
3

JavaScriptを使用してどのキーが押されたかは、KeyDown/KeyUpイベントに依存するライブラリを使用して確認できます。これは、ページ内でキーが押され/解放されたときにはうまく動作しますが、キーがページ外にリリースされたとき(つまり、フォーカスがないとき)にはイベントは発生しません。キーがページ外にリリースされたときにKeyUpイベントはありますか?

ので、ページにフォーカスがあるとき、一つは(イベントが発生します、すべてがうまくいく)Enterキーを押すことができますが、ページがフォーカスを持っていないとき、彼はそれを離したときに、イベントはない火を行い、そのキーがまだ押されているかどうかを知ることができなくなります。

使用するライブラリについては、を参照してください。 http://www.n-son.com/scripts/keyLib/keyLib.js

それはキーがページにフォーカスがないときに解放されたときに知っておくことは可能ですか?または、特定の時刻にキーが押されたかどうかを確認する一般的な機能はありますか?

答えて

3

ウィンドウがフォーカスを失ったとき、私はあなたがwindowblurイベント使用していますが、これはfalseにすべてのこの-キーでダウンフラグをリセットします:私は、私が使用している怖い

var someKeyIsDown; 

window.onblur = function() { 
    someKeyIsDown = false; 
}; 
1

KeyPressedなどの上位レベルのイベントを使用することはできません。これは、キーがヒットダウンされ、リリースされたことを保証しますか?

+0

をそれはゲームで。したがって、キーが押されている間は関数を呼び出す必要があります。したがって、それは単なる押下/解除のケースではありません。 – pimvdb

+2

ウィンドウ外で発生するイベントはキャプチャできません。あなたができることはフォーカス/ブラーのイベントを聞き、それらがKeyUpイベントであるかのように考えることです。これはあなたがマウスイベントについてそこに尋ねたものに匹敵します:http://stackoverflow.com/questions/4748177/possible-to-get-mouse-events-fired-when-cursor-is-outside-page – BiAiB

+0

はい、ありがとう。そして確かに私はすでにマウスのように尋ねてきましたが、キーの解決策があるかもしれません。 – pimvdb

2

「あなたの」プログラムと対話していない場合(ウェブページの場合、「あなたの」プログラムはウェブブラウザの一部です)、プログラムが知っているイベントは生成されません。

ウェブページがそれと関係のないイベント(完全に別のプログラムで機密メールを入力する、パスワードを入力するなど)を知ることを許可すると、セキュリティ上のリスクが大きくなります。

+0

良い点、私はそれについて考えなかった。オンラインのキーロガーを持つことは悪い考えです... – pimvdb

関連する問題