また、すべてのことのkeyCode、これは、charCodeはとkeyIdentifierは廃止されました:
charCode
とkeyIdentifier
非標準の機能です。
keyIdentifier
Chrome 54以降では削除されており、Opera 41.0
keyCode
は、FFの通常の文字によるキープレスイベントで0を返します。
重要なプロパティ:
readonly attribute DOMString key
押されたキーに対応するキー属性値を保持します
この記事の執筆時点では、このkey
プロパティは、Firefox 52、Chrome 55、Safari 10.1、Opera 46の時点ですべての主要なブラウザーでサポートされています。InternetExplorer 11を除きます。
非標準のキー識別子とAltGraphでの不正な動作。詳細
これが重要であるか、下位互換性がある場合は、次のコードのように機能検出を使用できます。
key
値がkeyCode
やwhich
プロパティとは異なることに注意してください。これには、コードではなくキーの名前が含まれています。プログラムで文字コードが必要な場合は、を利用できますcharCodeAt()
。単一の印刷可能な文字の場合charCodeAt()
、使用できるのは、ArrowUp
チャンスのように値に複数の文字が含まれるキーを処理している場合です。特別なキーをテストして、それに応じてアクションを実行します。だから、キーの値とそれに対応するコードのテーブルを実装してみてくださいcharCodeArr["ArrowUp"]=38
、charCodeArr["Enter"]=13
、charCodeArr[Escape]=27
...というように、見てください取るキー値とそれらに対応するコードを
if(e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
/* As @Leonid suggeted */
var characterCode = e.which || e.charCode || e.keyCode || 0;
}
/* ... code making use of characterCode variable */
上位互換性を検討したい場合があります。つまり、レガシープロパティが利用可能であり、ドロップされた場合にのみ新しいプロパティに切り替えます。
if(e.which || e.charCode || e.keyCode ){
var characterCode = e.which || e.charCode || e.keyCode;
}else if (e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
var characterCode = 0;
}
参照:KeyboardEvent.code
プロパティのドキュメントとこの回答の詳細。
.key
すべての主要ブラウザdeveloper.mozilla.org/en-US/docs/Web/API/KeyboardEvent/…で