Canvas 游戏 Space Bar Scrolls 浏览器

Canvas Game Space Bar Scrolls Browser

var canvas = document.getElementById('myCanvas');
canvas.addEventListener('keydown', function (event) {
   myHandleKeyboardEvent(event);
}, false);

这对我来说很好用。事件被发送到我的处理程序。

但是每当我点击 space 栏时,浏览器 window 就会滚动。

有什么方法可以在键盘事件到达浏览器之前吞下它们吗?

(我试过将处理程序放在 windowdocument 上,结果相同)。

既然有效,我将其作为答案发布:

var canvas = document.getElementById("myCanvas");
document.addEventListener(
  "keydown",
  function(event) {
    if (document.activeElement && document.activeElement.id === canvas.id) {
      event.preventDefault();
      myHandleKeyboardEvent(event);
    }
  },
  false
);

代码段现在包含 Kaiido 给出的重要建议 这是工作演示的 link。 https://codesandbox.io/s/o714xx10nz