无论何时按下向上或向下按钮,我都可以检查是否按下了这些按键,例如在这里会发出警告:
if ((38 in keysDown) ) { // Player holding up
window.alert("up button was pressed");
}
if ((40 in keysDown) ) { // Player holding down
window.alert("down button was pressed");
}
但是在这里,即使我按下进入警报也不会播放
if ((13 in keysDown) ) { // player pushed on enter
window.alert("enter key was pressed"); // here nothing happen
}
我在开始时使用这3行来添加事件列表器:
keysDown = {};
addEventListener("keydown", function (e) {keysDown[e.keyCode] = true;}, false);
addEventListener("keyup", function (e) {delete keysDown[e.keyCode];}, false);
但由于某种原因,我不知道输入键不起作用 问题发生在Firefox上,在Chrome和IE上正常工作
提前感谢。
编辑我找出了问题,我使用的画布没有焦点, 所以输入按钮不起作用,可以告诉我如何切换焦点?
答案 0 :(得分:0)
输入的关键代码是13。
这是一个检测按下回车键的简单事件方法:
编辑:我用更简单的东西编辑了我的帖子:
function check() {
if (window.event.keyCode == 13) {
document.write("Enter pressed");
}
}
<body onkeypress="check()">
</body>
答案 1 :(得分:0)
在Firefox中使用event.which
,在IE中使用event.keyCode
。
答案 2 :(得分:0)
编辑我弄清楚问题,我正在使用的画布没有 焦点,所以输入按钮不起作用,可以任意告诉我如何切换 重点?
确定。
How do you set focus to the HTML5 canvas element?
甚至更好:
1- Tabindex:
$("#canvas")
// Add tab index to ensure the canvas retains focus
.attr("tabindex", "0")
// Mouse down override to prevent default browser controls from appearing
.mousedown(function(){ $(this).focus(); return false; })
.keydown(function(){ /* ... bla bla bla ... */ return false; });
2-设置contentEditable为true:
// Add content editable to help ensure the canvas retains focus
$("#canvas").attr("contentEditable", "true")
$("#canvas")[0].contentEditable = true;
来源:How do I give an HTML canvas the keyboard focus using jquery?