0

我正在用 JavaScript 构建一个程序。虽然我尝试添加键事件,但是当我完成并尝试移动我的对象时它没有移动。y[1] += 5;当我试图移动一个对象(例如使用 x 和 y 坐标系( ))时,我试图找出问题所在。因此,我确实尝试查看,所以键码是正确的。我做了一个函数来查看keyCode

window.addEventListener( "keypress", doKeyDown, false );   
 
function doKeyDown(e) {
    alert( e.keyCode )
}

然后我尝试按任何按钮查看键码,但每个按钮都显示“0”,除非向上、向下、向右、向左箭头。他们告诉我的值与此网站上的值相同:http: //www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes但正如我所说的例如“W”“A”“S” “D”只是告诉我“0”作为键码,我想知道为什么。

4

3 回答 3

1

用于charCode代替keyCode字符。

charCode属性包含字符的 ascii,您可以使用它来检索按下的字母String.fromCharCode

Keycodes 和 charcodes 是不同的东西,您可以使用这种差异来确定用户是否键入了字符或完成了某个操作,例如使用箭头时。

于 2013-04-26T16:35:31.587 回答
0

您应该(在某些样式意见中)在事件侦听器中使用它之前声明您的函数,尽管所有浏览器都会提升它,但如果您使用jslint它会给您带来错误。

'doKeyDown' 在定义之前使用。

这是提供上述信息的众多答案之一:JSLint: Using a function before it's defined error

这是一个例子,在jsfiddle

<input id="input" type="text"></input>

console.log("W", "W".charCodeAt());

function logIt(evt) {
    console.log(String.fromCharCode(evt.charCode), evt.charCode);
}

var input = document.getElementById("input");

input.addEventListener("keypress", logIt, false);

您可能还想阅读以下答案,还有其他答案,关于不同的事件类型keypessand keydown,以及属性charCodeand keyCode

JavaScript KeyCode 与 CharCode

于 2013-04-26T16:41:01.447 回答
0

改为使用window.addEventListener("keydown", doKeyDown, false);。它将报告您链接的页面上列出的键码。否则,键码不同。

'keydown' 事件报告任何按下的键的键码,并且不区分大小写。

  • 'e' = 69 和'E' = 69
  • '[数字锁定]' = 144
  • '[退格]' = 8

'keypress' 事件似乎只报告可打印字符的按键(包括回车),并且按键代码也区分大小写。

  • 'e' = 101 和'E' = 69
  • '[Num Lock]' 没有价值。
  • '[Backspace]' 没有任何价值。

这是一个 JS Fiddle 示例,显示了两个事件报告的值。

这是在 Chrome 中测试的

于 2013-04-26T16:44:51.597 回答