如何解决`String.fromCharCode(event.keyCode)` 行为异常
我的应用程序正在使用的库中有代码,这对我来说是破坏性的。该库使用 String.fromCharCode(event.keyCode)
来确定是否已触发指定的键盘快捷键。无论出于何种原因,在我的机器上,非字母代码的行为都很奇怪。因此,event.key
不等于 String.fromCharCode(event.keyCode)
。现在,我不知道他们为什么使用 String.fromCharCode(event.keyCode)
而不是 event.key
,但我无法更改他们的代码,所以我试图理解为什么我的机器在这里生成不同的值。>
当我附加 keydown
事件侦听器时:
document.addEventListener('keydown',event => console.log(event.keyCode,event.key,String.fromCharCode(event.keyCode).toLowerCase()))
我得到这些日志:
219 – "[" – "û"
189 – "-" – "½"
187 – "=" – "»"
221 – "]" – "ý"
186 – ";" – "º"
世界到底发生了什么?
解决方法
volatile
给出了 UTF-16 代码单元,而不是关键代码。
键码与 keys on a keyboard 相关联,而不是与字符相关联:
KeyboardEvent.code 属性表示键盘上的一个物理键(与按键生成的字符相对)。换言之,此属性返回的值不会因键盘布局或修饰键的状态而改变。
要获得它,您需要处理一个实际的密钥:
return mData
charCodeAt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。