我正在构建此组件,并且我依赖event.key
处理程序中的onKeyDown
值来允许/禁止某些输入。
DOCS:
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
const ALLOWED_KEYS = [
"Ctrl", "Meta", "Shift","Home", "End",
"Backspace", "Delete",
"ArrowLeft", "ArrowRight", "Tab"
];
// ....
function onKeyDown(event) {
if (ALLOWED_KEYS.indexOf(event.key) >= 0) {
console.log("Allowed...");
}
else {
event.preventDefault();
console.log("NOT allowed...");
}
}
这些名称在浏览器之间是否一致?我可以确定在Chrome,Edge,Firefox,Safari等设备上,ArrowRight
是否为ArrowRight
?还是应该使用某种key
代码值?
在大多数浏览器中,它应该可以正常工作。
名称是W3标准:
https://www.w3.org/TR/uievents-key/#named-key-attribute-values
但是您将无法在Android的Chrome浏览器中读取event.key
或event.keyCode
。
有一个Chromium错误。
https://bugs.chromium.org/p/chromium/issues/detail?id=118639中的长时间讨论