事件上按输入JavaScript

问题描述:

每当我按下向上或向下按钮,我可以检查这些键被按下例如警报将在这里发射:事件上按输入JavaScript

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

在此先感谢。

编辑我想不通的问题,我现在用的可是没有重点,所以 输入按钮不起作用,可以ANY1告诉我如何切换焦点画布?

+2

在每个浏览器中都会发生这种情况吗?你注意到了哪个浏览器?你能提供一个小提琴吗? – 2012-04-20 18:30:06

+0

我用firefox ...我需要它主要在Firefox上工作 – 2012-04-20 18:30:58

+0

结帐这[[小提琴](http://jsfiddle.net/6SUkG/)为我在Firefox中工作...显示keyCode 13 – 2012-04-20 18:36:25

编辑我想不通的问题,这是我现在用犯规画布有 焦点,因此输入按钮不起作用,可以ANY1告诉我如何切换 重点是什么?

当然。
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?

的输入授权码是13.

这里是关于检测的按一个简单的事件方法enter键:

编辑:我编辑我的职务的东西要简单得多:

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

<body onkeypress="check()"> 
</body> 
+0

我认为这只会在Chrome中起作用......这里当前的事件对象存储在window.event中......但这不适用于其他浏览器imho – 2012-04-20 18:38:32

+0

也许你是对的。我正在使用基于webkit的浏览器。 – Rrjrjtlokrthjji 2012-04-20 18:40:32

在Firefox中使用event.which,在IE中使用event.keyCode