我们拥有的:
keydown事件+ preventDefault防止keypress事件(证据:https://stackoverflow.com/a/57401334/9398364)stopPropagation根本没有帮助--event.key值的完整列表(我们不能使用event.key.codePointAt(0))将其作为unicode值抛出)
我们需要的是:
tab按下铬键),而不需要巨大的开关表达式keydown事件,因为我们需要shift、ctrl和其他关键事件(event.code matters)ctrl)
keypress事件,因为我们需要在没有input事件和的情况下输入unicode字符(event.key matters),而无需检查它是否是不可打印的字符(如shift和)。多么?
UPD:似乎非unicode event.key有>1长度(源:https://stackoverflow.com/a/70401792/9398364),有证据证明吗?
发布于 2021-12-25 17:35:23
像这样解决:
window.addEventListener('keydown', function (event)
{
onKeyboard(event.code);
if (event.key.length === 1 && !event.ctrlKey && !event.metaKey)
{
const utf16Code = event.key.codePointAt(0);
onKeyboardInput(utf16Code);
}
event.preventDefault();
}, false);https://stackoverflow.com/questions/70481633
复制相似问题