我知道这可能是徒劳的,但我想知道是否有答案。我正在制作一个HTML5游戏,我正在尝试获得键盘输入。请告诉我有人知道谷歌没有。希望至少它会强调需要更多跨浏览器的键盘事件和密钥代码。
请告诉我javascript api中有一些列出每个键的键码的对象。如果没有,为什么还没有完成,只要能够获取密钥的代码将使我们的工作变得更加容易。不再测试每个浏览器/操作系统的不一致性。
如果不是(这可能是徒劳的),有没有办法将默认密码重新定义为我们自己的自定义密钥代码?
我不知道为什么还没有做更多工作才能让这更方便?
答案 0 :(得分:12)
我发现this页面非常有帮助。 quirks mode也有一篇很好的文章。事实是,有浏览器的不一致性和jQuery这样的javascript框架帮助。
答案 1 :(得分:7)
JavaScript不包含keycode-to-keyname配对的内置哈希值。
这在很大程度上是不必要的,因为JS使用与操作系统报告的相同的密钥代码。添加哈希只会不必要地阻碍性能。
程序不需要知道密钥的名称,只需知道要采取的操作。
而不是像以下那样编写代码:
if (e.keyCode === customKeyList.UP)
{
doUp();
}
您只需设置自己的操作哈希值:
//before the event
actions = {
'38': function () {
//do UP stuff here
},
'40': function () {
//do DOWN stuff here
}
};
//during the event
if (actions[e.keyCode]) {
actions[e.keyCode]();
}
在该示例中,计算机无需知道密钥的名称,但为方便起见,将其写为:
可能很有用。actions[keys.UP] = function () {...};
actions[keys.DOWN] = function () {...};
但您需要定义自己的keycode-to-keyname配对对象。
我最近发现jQuery UI有一些常用密钥代码列表($.ui.keyCode
):
keyCode: {
ALT: 18,
BACKSPACE: 8,
CAPS_LOCK: 20,
COMMA: 188,
COMMAND: 91,
COMMAND_LEFT: 91, // COMMAND
COMMAND_RIGHT: 93,
CONTROL: 17,
DELETE: 46,
DOWN: 40,
END: 35,
ENTER: 13,
ESCAPE: 27,
HOME: 36,
INSERT: 45,
LEFT: 37,
MENU: 93, // COMMAND_RIGHT
NUMPAD_ADD: 107,
NUMPAD_DECIMAL: 110,
NUMPAD_DIVIDE: 111,
NUMPAD_ENTER: 108,
NUMPAD_MULTIPLY: 106,
NUMPAD_SUBTRACT: 109,
PAGE_DOWN: 34,
PAGE_UP: 33,
PERIOD: 190,
RIGHT: 39,
SHIFT: 16,
SPACE: 32,
TAB: 9,
UP: 38,
WINDOWS: 91 // COMMAND
}
答案 2 :(得分:2)
您可以通过捕获按键并检查事件对象来找到大多数浏览器的键绑定 - 它可能有一组虚拟键绑定。
Mozilla返回此集 -
Property Value
CANCEL= 3
HELP= 6
BACK_SPACE= 8
TAB= 9
CLEAR= 12
RETURN= 13
ENTER= 14
SHIFT= 16
CONTROL= 17
ALT= 18
PAUSE= 19
CAPS_LOCK= 20
KANA= 21
HANGUL= 21
JUNJA= 23
FINAL= 24
HANJA= 25
KANJI= 25
ESCAPE= 27
CONVERT= 28
NONCONVERT= 29
ACCEPT= 30
MODECHANGE= 31
SPACE= 32
PAGE_UP= 33
PAGE_DOWN= 34
END= 35
HOME= 36
LEFT= 37
UP= 38
RIGHT= 39
DOWN= 40
SELECT= 41
PRINT= 42
EXECUTE= 43
PRINTSCREEN= 44
INSERT= 45
DELETE= 46
0= 48
1= 49
2= 50
3= 51
4= 52
5= 53
6= 54
7= 55
8= 56
9= 57
SEMICOLON= 59
EQUALS= 61
A= 65
B= 66
C= 67
D= 68
E= 69
F= 70
G= 71
H= 72
I= 73
J= 74
K= 75
L= 76
M= 77
N= 78
O= 79
P= 80
Q= 81
R= 82
S= 83
T= 84
U= 85
V= 86
W= 87
X= 88
Y= 89
Z= 90
CONTEXT_MENU= 93
SLEEP= 95
NUMPAD0= 96
NUMPAD1= 97
NUMPAD2= 98
NUMPAD3= 99
NUMPAD4= 100
NUMPAD5= 101
NUMPAD6= 102
NUMPAD7= 103
NUMPAD8= 104
NUMPAD9= 105
MULTIPLY= 106
ADD= 107
SEPARATOR= 108
SUBTRACT= 109
DECIMAL= 110
DIVIDE= 111
F1= 112
F2= 113
F3= 114
F4= 115
F5= 116
F6= 117
F7= 118
F8= 119
F9= 120
F10= 121
F11= 122
F12= 123
F13= 124
F14= 125
F15= 126
F16= 127
F17= 128
F18= 129
F19= 130
F20= 131
F21= 132
F22= 133
F23= 134
F24= 135
NUM_LOCK= 144
SCROLL_LOCK= 145
COMMA= 188
PERIOD= 190
SLASH= 191
BACK_QUOTE= 192
OPEN_BRACKET= 219
BACK_SLASH= 220
CLOSE_BRACKET= 221
QUOTE= 222
META= 224
答案 3 :(得分:2)
Google Closure库中的keycodes.js和keyhandler.js类列出了许多关键代码和有关不同浏览器差异的有用评论。