javascript - onkeydown 事件在 Canvas 上不起作用?

标签 javascript canvas event-handling keycode onkeydown

我有一个 Canvas 和一个分配给它的 onkeydown 事件。当按下任意键时,控制台应该记录该键的 keyCode。但它没有输出任何内容,甚至没有输出“未定义”。其他处理程序(例如 onclick)工作正常,但 onkeydown 则不然。我还尝试过使用 onkeypressonkeyup,但这些也不起作用。完整代码如下:

canvas.onkeydown = function(e){
    if(e.keyCode === 37){
        ctx.clearRect(0,0,canvas.width,canvas.height);
        ctx.drawImage(knife,knifeX - 10, knifeY);
        knifeX -= 10;
    }
    else if(e.keyCode === 39){
        ctx.clearRect(0,0,canvas.width,canvas.height);
        ctx.drawImage(knife,knifeX + 10, knifeY);
        knifeX += 10;           
    }
    else if(e.keyCode === 38){
        ctx.clearRect(0,0,canvas.width,canvas.height);
        ctx.drawImage(knife,knifeX, knifeY + 10);
        knifeY += 10;
    }
    else if(e.keyCode === 40){
        ctx.clearRect(0,0,canvas.width,canvas.height);
        ctx.drawImage(knife,knifeX, knifeY - 10);
        knifeY -= 10;               
    }
    console.log(e.keyCode);     
}

最佳答案

如果使用canvas.onkeydown,请使用window.onkeydown,否则您将需要专注于 Canvas 才能工作。

window.onkeydown = function() {};

仅当您专注于该元素时,附加到 Canvas 元素才会起作用。窗口对象是整个浏览器。

关于javascript - onkeydown 事件在 Canvas 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32936894/

相关文章:

javascript - 检测页面上的Flowplayer并添加事件监听器

wpf - 无法将事件处理程序附加到样式中的上下文菜单项

javascript - 引用错误 : require is not defined

javascript - 如何在 HTML5 Canvas 中找到一条线的坐标

javascript - 无法根据文本选择 <a>,然后使用 jQuery 添加名为 "target"的属性

java - SWT 将光标放置在 Canvas 上

javascript - Three.js – 如何在不调整渲染器大小或缩放内容的情况下调整 Canvas 大小?

c# - 方法名称预期 c#

javascript - 如何在javascript中使用promise获取多个图像文件信息

javascript - 如何使用 jsfiddle 在 javascript 中输出新行?