2009-03-04 12 views

答えて

5

初めてこの試みを試みたときに、StringのcharCodeAtメソッドを使用しました。たとえば、あなたが「」キーの押しを検出したい場合:私は大文字「」の代わりに「A」を使用

if ("A".charCodeAt(0) == event.keyCode) { 
    /* Do stuff here. */ 
} 

お知らせ。これは、event.keyCodeが大文字のUnicode値としてのみ報告されるためです(アルファベットの場合)。この問題を少し厄介にするのは、押されたキーのUnicode値を取得する方法がいくつかあることです。 Firefoxでは、あなたが持っている:

  • event.keyCode
  • event.charCode
  • をMozillaの開発者向けドキュメントによると、キーのUnicode値がどちらかに保存されますevent.which

event.keyCodeまたはevent.charCodeですが、両方ではありません。どちらのコードにも関係なく、event.whichに格納されます。ただし、値がcharCodeに格納されている場合は、大文字と小文字が区別されます。だから、イベントをどこから得るかによって、 "a"と "A"の両方をチェックする必要があります。 「onkeydown」イベントからキーイベントを取得するだけの贅沢さがあり、Firefoxをターゲットにしている場合は、event.keyCodeで大文字小文字を区別しないコード(大文字)を得ることができます。実際には、Windows XPのFirefox 3.0.3、MacOS 10.4のFirefox 3.0.4、MacOS 10.4のSafari 3.2.1、MacOS 10.4のOmniWeb 5.8でこれをテストしました。すべて同じです。しかし、私はIEのバージョンやOperaなどでこれを試していません。

これを最初から開発したい場合は、私はあなたがアクセスできる数の異なるオペレーティングシステム上で見つけることができる多くの異なるブラウザを取得し、各ブラウザがキーコードをどのように報告するかを調べるためにいくつかの実験を行うことを提案します。しかし、誰かがすでにその作業を行っています。あなたの例としてリンクされた質問にはone of the answersでさえ言及されました!それはjs-hotkeysと呼ばれるjQuery用のプラグインです。これにより、キーまたはキーの組み合わせが押されたときに実行されるコールバック関数を登録することができます。私はプロジェクトのサイトからコピーした使用例:

$(document).bind('keydown', 'Ctrl+a', fn); 

異なるブラウザ/さまざまなプラットフォームで動作するようにテストされていますので、あなたはjQueryのを使用している場合、これはおそらく移動するための方法です。なんらかの理由でjQueryを使いたくない場合は、運が悪いわけではありません。どうやらこれはanother scriptに基づいていました。私はまだこれらのライブラリを個人的に使用していないので、使いやすさや有効性を保証することはできません。それは、もし私があなたの問題を抱えていたら、それは私がそれを解決しようとする方向です。

+0

ありがとうございます。ご了承いただきありがとうございます。私は何とかあなたの答えを完全に逃しました。 – Ken

+0

問題ありません。評判の少し遅れたバンプは常に素晴らしい驚きです。 –

関連する問題