【发布时间】:2022-01-25 14:25:36
【问题描述】:
我们有什么:
-
keydownevent +preventDefault阻止keypressevent(证明:https://stackoverflow.com/a/57401334/9398364) -
stopPropagation根本没有帮助 - 我们无法使用 dispatchEvent 模拟按键,因为我们不知道无法打印的
event.key值的完整列表(我们不能使用event.key.codePointAt(0)将其作为 unicode 值抛出)
我们需要什么:
-
禁用默认浏览器按键反应(即
tab在 chrome 中按下)而无需巨大的开关表达式 -
检测
keydown事件,因为我们需要shift、ctrl和其他按键事件 (event.code很重要) -
检测
keypress事件,因为我们需要在没有input事件的情况下输入unicode字符(event.key很重要)和而不检查它是否是不可打印的字符(例如shift和@987654338 @)
怎么做?
更新: 似乎非 unicode event.key 的长度 >1(来源:https://stackoverflow.com/a/70401792/9398364) 有证据吗?
【问题讨论】:
-
也许使用正则表达式(例如:
/\w|\d|ctrl|shift/)测试 keydown 是否对您的应用程序有用,否则preventDefault()? -
@JeanWill 即使可行,这也太脏且太慢了。我需要所有曾经存在过的钥匙
标签: javascript events