我想进行击键并获得其ASCII表示。这包括按下SHIFT键时,即
如果没有编写大量代码,有没有办法可以做到这一点?
编辑:
document.onkeypress = function () {
console.log(event.which);
}
答案 0 :(得分:4)
非常更少的代码,您可以这样做:
document.onkeypress = function () {
console.log(event.which);
}
运行上述代码后检查您的控制台。
ps:上述代码的权重为 55个字符。
;)
更新:应该是onkeypress
而不是onkeydown
。谢谢Timo。
答案 1 :(得分:0)
以下是7位ascii(又名us-ascii)中大写/小写“a”的十进制编码。
char decimal hexidecimal
A 65 41
a 97 61
这就是事情。 keyCode!= ascii(必要)。记住许多不同的键盘,语言等。例如,我可以在德国物理键盘上选择(在软件中)us-english布局。那是在操作系统级别。
在浏览器中,除非另有说明,否则表单字符编码默认为页面编码(例如utf-8,iso-8859-1等)。
您可以使用以下代码段来了解按键事件中的内容。
document.onkeypress = function (e) {
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
console.log('charCode: ' + charCode +
' keyIdentifier: ' + e.keyIdentifier +
' which: ' + e.which +
' keyCode: ' + e.keyCode +
' shiftKey: ' + e.shiftKey +
' ctrlKey: ' + e.ctrlKey +
' altKey: ' + e.altKey +
' metaKey: ' + e.metaKey);
}
以下答案解释说,使用按键事件通常是获取字符代码而非密钥代码的唯一可靠方式。这似乎就是你所追求的。
JavaScript KeyCode vs CharCode
果然,使用onkeypress
代替onkeydown
或onkeyup
会给我65和97代表“A”和“a”。你需要更新你的javascript以忽略你不感兴趣的键的事件(即转移等)。
有趣的实验将是使用页面编码和7位ascii范围之外的字符,并查看此方法对于获取实际字符编码的效果。