1. ホーム
  2. javascript

[解決済み] KeyboardEvent.keyCodeが非推奨になりました。これは実際にはどのような意味があるのでしょうか?

2022-04-16 15:53:04

質問

MDNによると、我々は最も確実に ではなく を使用しています。 .keyCode プロパティを使用します。これは非推奨です。

https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode

W3スクールでは、この事実は軽視され、次のような傍証があるのみです。 .keyCode は互換性のためにのみ提供されており、最新版のDOM Events Specificationでは .key プロパティの代わりに

問題は .key はブラウザがサポートしていないので、何を使えばいいのでしょうか?何か見落としがあるのでしょうか?

解決方法は?

共有したリンク先に書かれているように、3つの対処法があります。

if (event.key !== undefined) {

} else if (event.keyIdentifier !== undefined) {

} else if (event.keyCode !== undefined) {

}

クロスブラウザに対応させたいなら、それが正しい方法です。

こんな感じで実装してくれると楽なんですけどね。

var dispatchForCode = function(event, callback) {
  var code;

  if (event.key !== undefined) {
    code = event.key;
  } else if (event.keyIdentifier !== undefined) {
    code = event.keyIdentifier;
  } else if (event.keyCode !== undefined) {
    code = event.keyCode;
  }

  callback(code);
};