按下键码不是 return 预期的字符串值
Key down keycode not return expected string value
我在我的应用程序中使用了 iframe
。当我按键盘上的任意键时,我有 return 字符串值。
除键 219 ,220, 221
外,所有其他键都是 return 预期的字符串值。
这些键 returned "Û", "Û", "Ý"
这些值。
但我希望 "[", "]", "\"
这些字符串值。
如何从这些键中获取正确的字符?
keydown
和 keyup
使用不同键盘的键码,具体取决于您的输入键盘类型(不同地区使用不同的键盘等)。
对于可打印字符,您需要等待浏览器发出 keypress
,这会为您提供字符键的 translated 值(如果有的话),它在 charCode
中为您提供(尽管偏执地我倾向于这样做 e.charCode || e.which
;也许这很愚蠢)。例如,我的键盘上有一个键,在 *nix 下我配置它的方式是 keydown
/keyup
的键码 220 并生成字符 £
。但是在具有不同键盘布局的虚拟机 运行 Windows 中,相同的键是 keydown
/keyup
的键码 220 但会生成字符 #
.
示例:
function handler(e) {
var msg = "Received " + e.type;
if (e.type === "keypress") {
// keypress
msg += " '" + String.fromCharCode(e.charCode || e.which) + "'";
} else {
// keydown/keyup
msg += " " + (e.which || e.keyCode);
}
console.log(msg);
}
document.addEventListener("keydown", handler, false);
document.addEventListener("keyup", handler, false);
document.addEventListener("keypress", handler, false);
Click here to focus the document, then press keys.
我在我的应用程序中使用了 iframe
。当我按键盘上的任意键时,我有 return 字符串值。
除键 219 ,220, 221
外,所有其他键都是 return 预期的字符串值。
这些键 returned "Û", "Û", "Ý"
这些值。
但我希望 "[", "]", "\"
这些字符串值。
如何从这些键中获取正确的字符?
keydown
和 keyup
使用不同键盘的键码,具体取决于您的输入键盘类型(不同地区使用不同的键盘等)。
对于可打印字符,您需要等待浏览器发出 keypress
,这会为您提供字符键的 translated 值(如果有的话),它在 charCode
中为您提供(尽管偏执地我倾向于这样做 e.charCode || e.which
;也许这很愚蠢)。例如,我的键盘上有一个键,在 *nix 下我配置它的方式是 keydown
/keyup
的键码 220 并生成字符 £
。但是在具有不同键盘布局的虚拟机 运行 Windows 中,相同的键是 keydown
/keyup
的键码 220 但会生成字符 #
.
示例:
function handler(e) {
var msg = "Received " + e.type;
if (e.type === "keypress") {
// keypress
msg += " '" + String.fromCharCode(e.charCode || e.which) + "'";
} else {
// keydown/keyup
msg += " " + (e.which || e.keyCode);
}
console.log(msg);
}
document.addEventListener("keydown", handler, false);
document.addEventListener("keyup", handler, false);
document.addEventListener("keypress", handler, false);
Click here to focus the document, then press keys.