whichイベント属性
この記事の下部にはさらに多くの例が含まれています。
定義と使用
which 属性は次を返しますonkeypressイベントがトリガーされたキーの値の文字コード、またはonkeydown 或 onkeyupイベントのキーコード。
2つのコードタイプの違いは次のとおりです:
- 文字コード - ASCII 文字を表す数字
- キーボードコード - キーボード上の実際のキーを表す数字
2つのタイプの値は必ずしも等しいわけではありません。例えば小文字の "w" と大文字の "W" は同じキーボードコードを持ちます。なぜならキーボード上では同じキーだからです("W" のコードは "87")。しかし、それらは異なる文字コードを持ち、2つの文字の出力は異なります("w" と "W" の文字コードは "119" と "87") - 以下の例を見るとよりよく理解できます。
ヒント:ユーザーが押したキーがプリントキー("a" や "5" など)かどうかを知る必要がある場合は、onkeypress イベントを使用することをお勧めします。ユーザーが押したキーがファンクションキー("F1"、"CAPS LOCK" や "Home" など)かどうかを知る必要がある場合は、onkeydown または onkeyup イベントを使用できます。
注意:IE8 およびそれ以前のバージョンは which 属性をサポートしていません。サポートしていないブラウザでは、keyCode属性を使用できます。ただし、Firefox ブラウザの onkeypress イベントでは keyCode 属性は無効です。これらのブラウザと互換性を持たせるには、次のコードを使用できます:
ヒント:すべての Unicode 文字の一覧は、当サイトの以下を参照してください:完全な Unicode リファレンスマニュアル。
ヒント:Unicode 値を文字に変換する必要がある場合は、fromCharCode()メソッドを使用できます。
注意:この属性は読み取り専用です。
注意:which 属性と keyCode 属性は、ブラウザ間の互換性を解決する方法を提供しました。最新の DOM イベントでは、key属性を使用してこの方法を置き換えることを推奨します。
ヒント:"ALT"、"CTRL"、"META" または "SHIFT" キーが押されたかどうかを確認したい場合は、altKey, ctrlKey, metaKey 或 shiftKey属性を使用できます。
ブラウザサポート
表内の数字は、その属性をサポートする最初のブラウザのバージョン番号を示します。
| 属性 | |||||
|---|---|---|---|---|---|
| which | Yes | 9.0 | Yes | Yes | Yes |
構文
技術詳細
| 戻り値: | 数値。Unicode 文字コードまたは Unicode キーコードを表します。 |
|---|---|
| DOM バージョン: | DOM Level 2 Events |
その他の例
例
onkeypress と onkeydown を使用して、文字コードとキーボードコードの違いを示します:
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" キーを押した場合(Caps Lock を使用しない)、出力結果は次のとおりです:
Unicode キーボードコード:65
試してみる »
例
Esc キーを押すとアラートメッセージが表示されます:
function myFunction(event) {
var x = event.which || event.keyCode; // event.keyCode は IE8 以前のバージョンで使用
if (x == 27) { // 27 は ESC キー
alert ("You pressed the Escape key!");
}
}
試してみる »
例
Unicode 値を文字に変換します(ファンクションキーには使用できません):
var y = String.fromCharCode(x); // 値を文字に変換
試してみる »
関連ページ
HTML DOM リファレンスマニュアル:key イベント属性
HTML DOM リファレンスマニュアル:keyCode イベント属性
HTML DOM リファレンスマニュアル:charCode イベント属性
その他の拡張
イベントオブジェクト