KeyboardEvent which 属性
定義と使用方法
which 属性がトリガー onkeypress イベント のキーの Unicode 文字コード、またはトリガー onkeydown または onkeyup イベントのキーの Unicode キーコード
2つのコードタイプの違い:
- 文字コード - ASCII 文字を表す数字
- キーコード - キーボード上の実際のキーを表す数字
これらのタイプは常に同じ意味を指しているとは限りません。例えば、小文字の「w」と大文字の「W」のキーボードコードは同じです(「W」は数字「87」ですが)、しかし、結果的な文字コードは異なります(「w」または「W」、すなわち「119」または「87」)- 下記の例を参照して、この点についてよりよく理解することができます。
ヒント:ユーザーが印刷可能なキー(例えば「a」または「5」)を押したかどうかを確認するには、この属性を使用して onkeypress イベントに推奨します。ユーザーが機能キー(例えば「F1」、「CAPS LOCK」または「Home」)を押したかどうかを確認するには、onkeydown または onkeyup イベントを使用してください。
注釈:IE8およびそれ以前のバージョンでは、which属性がサポートされていません。これらのブラウザバージョンでは、keyCode属性を使用できます。ただし、keyCode属性はFirefoxのonkeypressイベントでは機能しません。クロスブラウザのソリューションには、以下のコードを使用できます:
var x = event.which || event.keyCode; // which または keyCode を使用するかは、ブラウザのサポートに依存
ヒント:すべてのUnicode文字のリストについては、私たちの 完全なUnicodeリファレンス。
ヒント:Unicode値を文字に変換するには、 fromCharCode() メソッド。
注釈:この属性は読み取り専用です。
注釈:keyCode と which 属性は互換性のために提供されています。最新バージョンの DOM イベント規格では、key 属性を使用することを推奨しています(利用可能の場合)。
ヒント:「ALT」、「CTRL」、「META」または「SHIFT」キーが押されているかどうかを知りたい場合は、 altKey、ctrlKey、metaKey または shiftKey 属性。
構文
event.which
技術的詳細
返り値: | Unicode文字コードまたはUnicodeキーボードコードを示す数値。 |
---|---|
DOMバージョン: | DOMレベル2イベント |
ブラウザのサポート
表中的数字注明了完全支持该属性的首个浏览器版本。
属性 | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
which | サポート | 9.0 | サポート | サポート | サポート |
更多实例
例
onkeypress と onkeydown を使用して、文字コードとキーボードコードの違いを示します:
<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)"> function uniCharCode(event) { var char = event.which || event.keyCode; // event.keyCodeはIE8およびそれ以前のバージョンで使用 document.getElementById("demo").innerHTML = "Unicode CHARACTER code: " + char; } function uniKeyCode(event) { var key = event.which || event.keyCode; // event.keyCodeはIE8およびそれ以前のバージョンで使用 document.getElementById("demo2").innerHTML = "Unicode KEY code: " + key; }
キーボードの「a」キーを押したとき(Capslockを使用しない場合)、charとkeyの結果は以下の通りです:
Unicode CHARACTER code: 97 Unicode KEY code: 65
例
ユーザーがEscapeキーを押した場合、テキストを表示します:
<input type="text" onkeydown="myFunction(event)"> function myFunction(event) { var x = event.which || event.keyCode; // event.keyCodeはIE8およびそれ以前のバージョンで使用 if (x == 27) { // 27はESCキーの値 alert("Escapeキーを押しました!"); } }
例
Unicode 値を文字に変換(機能キーには適用されません):
var x = event.which || event.keyCode; // Unicode 値を取得 var y = String.fromCharCode(x); // 値を文字に変換
関連ページ
HTML DOM リファレンスマニュアル:KeyboardEvent key 属性
HTML DOM リファレンスマニュアル:KeyboardEvent keyCode 属性
HTML DOM リファレンスマニュアル:KeyboardEvent charCode 属性