键盘事件.键代码已弃用。这在实践中意味着什么?

2022-08-30 01:03:55

根据MDN的说法,我们绝对不应该使用该属性。它已被弃用:.keyCode

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

在 W3 学校中,这一事实被淡化了,只有一个旁注说它只是为了兼容性而提供的,并且最新版本的 DOM 事件规范建议改用该属性。.keyCode.key

问题是浏览器不支持,那么我们应该使用什么呢?我错过了什么吗?.key


答案 1

例如,如果您想检测是否单击了“Enter”键:

而不是

event.keyCode === 13

像这样做

event.key === 'Enter'

答案 2

你有三种方法来处理它,因为它写在你分享的链接上。

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);
};