浏览器密钥代码列表
Browser key code list?
我知道这可能是徒劳的,但我想看看是否有一个答案。我正在制作一款HTML5游戏,并尝试使用键盘输入。拜托告诉我有人知道谷歌不知道的事。希望它至少能强调键盘事件和键码需要跨浏览器的程度。
请告诉我在javascript api中有某种对象列出每个键的键码。如果没有,为什么还没有人这么做,仅仅是能够获取密钥的代码就能让我们的工作变得容易得多。不再测试每个浏览器/操作系统的不一致性。
如果不是这样(这可能是徒劳的)有没有一种方法来重新定义默认的键码到我们自己的自定义键码?
我不知道为什么没有做更多的工作来使它更方便?
我觉得这个页面很有帮助。怪癖模式也有一篇很好的文章。事实上,浏览器的不一致性和像jQuery这样的javascript框架可以帮助解决这个问题。
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
}
您可以通过捕获按键并检查事件对象来找到大多数浏览器的键绑定-它可能有一组虚拟键绑定。
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
来自Google Closure库的keycodes.js和keyhandler.js类有许多关键代码的列表和关于不同浏览器差异的有用注释
- Angular:使用选择列表选择过滤代码中的对象
- 我在下拉列表中尝试了下一个和前五年的html代码.接下来的5年我都过得很好.我怎样才能拿到之前的5年
- php代码或脚本接受自动完成列表中文本框中的值
- 如何使用预定义字符串列表“动态”生成 HTML 代码
- 如何在从代码后面显示之前,在弹出窗口中选择预先填充的下拉列表选项
- 如何修改代码以将其应用于三个下拉列表?(Jquery)
- 从HTML代码段创建节点列表后,.find()未按预期工作
- 使用基于值的jQuery代码更改SharePoint列表字段颜色
- 我正试图让它,当你点击其中一个下拉选择时,它会添加到列表中,这是我们的一个下拉按钮的代码
- Javascript待办事项列表-我的代码中有什么错误
- 链接下拉列表选择列表代码 -- 连接数据
- 如何使以下 JavaScript 代码工作并生成 ID 为 “myDivId” 的元素内的名称和年龄列表:
- 级联下拉列表未填充在 IE 9(代码点火器)中
- 代码点火器动态表单下拉列表,不返回值,而是返回 ID
- 代码镜像如何创建自定义自动完成下拉列表
- 尝试运行下一个上一个按钮以播放列表媒体播放器代码中的视频,出现错误
- 在 Javascript 下拉列表中添加 HTML 代码,Javascript 不评估 HTML 代码
- YouTube播放列表代码示例
- Jquery-select2 -将select2添加到现有的下拉列表代码中以使其可搜索
- 从XML填充下拉列表-代码执行顺序错误