【发布时间】:2015-10-05 02:39:35
【问题描述】:
我有一个画布和一个分配给它的onkeydown 事件。当 any 键被按下时,控制台应该记录该键的 keyCode。但它没有输出任何东西,甚至没有undefined。像onclick 这样的其他处理程序工作正常,但onkeydown 不是。我也尝试过使用onkeypress 和onkeyup,但这些也不起作用。这是完整的代码:
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);
}
【问题讨论】:
-
你在哪个浏览器中测试这个?
-
@jsh Google Chrome,最新版本。
-
如果焦点在元素内部,keydown 会触发,猜测是它没有聚焦,你应该听窗口的按键。
-
@epascarello 谢谢!完美运行!
标签: javascript canvas event-handling keycode onkeydown