0

每当我按下向上或向下按钮时,我都可以检查是否按下了这些键,例如此处会触发警报:

 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 上工作正常

提前致谢。

编辑我发现了问题,我使用的画布没有焦点,所以输入按钮不起作用,任何人都可以告诉我如何切换焦点吗?

4

3 回答 3

0

输入的键码是 13。

这是一个检测回车键按下的简单事件方法:

编辑:我用更简单的东西编辑了我的帖子:

    function check() {
        if (window.event.keyCode == 13) {
            document.write("Enter pressed");
        }
    }

<body onkeypress="check()">
</body>
于 2012-04-20T18:33:01.273 回答
0

event.which在 Firefox 和event.keyCodeIE 中使用。

于 2012-04-20T18:39:11.280 回答
0

编辑我发现了问题,我使用的画布没有焦点,所以输入按钮不起作用,任何人都可以告诉我如何切换焦点吗?

当然。
如何将焦点设置到 HTML5 画布元素?

甚至更好:

1-标签索引:

$("#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;

来源:如何使用 jquery 为 HTML 画布提供键盘焦点?

于 2012-04-20T18:54:52.300 回答