微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

`String.fromCharCode(event.keyCode)` 行为异常

如何解决`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 举报,一经查实,本站将立刻删除。