文章内容

2020/5/8 9:04:25,作 者: 黄兵

KeyboardEvent.keyCode deprecated

今天在写键盘输入事件的时候,出现了如如下提示:

Deprecated symbol used,consult docs for batter alternative

截图如下:

出现问题的原因:

根据MDN,我们绝对应该不使用.keyCode属性,具体文章:KeyboardEvent.keyCode

解决方案:

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

同时另外一种方法:

window.addEventListener("keydown", function (event) {
  if (event.defaultPrevented) {
    return; // Do nothing if the event was already processed
  }

  switch (event.key) {
    case "Down": // IE/Edge specific value
    case "ArrowDown":
      // Do something for "down arrow" key press.
      break;
    case "Up": // IE/Edge specific value
    case "ArrowUp":
      // Do something for "up arrow" key press.
      break;
    case "Left": // IE/Edge specific value
    case "ArrowLeft":
      // Do something for "left arrow" key press.
      break;
    case "Right": // IE/Edge specific value
    case "ArrowRight":
      // Do something for "right arrow" key press.
      break;
    case "Enter":
      // Do something for "enter" or "return" key press.
      break;
    case "Esc": // IE/Edge specific value
    case "Escape":
      // Do something for "esc" key press.
      break;
    default:
      return; // Quit when this doesn't handle the key event.
  }

  // Cancel the default action to avoid it being handled twice
  event.preventDefault();
}, true);


参考资料:

1、KeyboardEvent.keyCode deprecated. What does this mean in practice?
2、KeyboardEvent.key

分享到:

发表评论

评论列表