aug*_*tin 6 javascript keycode keypress keydown
keypress不推荐使用javascript事件:https :
//developer.mozilla.org/en-US/docs/Web/API/Document/keypress_event
有些人建议完全依赖keydown事件,例如:
Keydown是我们唯一需要的键盘事件
https://www.mutuallyhuman.com/blog/2018/03/27/keydown-is-the-only-keyboard-event-我们需要/
问题是keydown和keypress不是同义词。至关重要的是,它们在许多/大多数情况下不会返回相同的字符。Keydown表示按下了键盘上的哪个键,而keypress表示用户实际键入的字符。
在英语中,区分大小写很重要:
letter = String.fromCharCode(event.which);
Run Code Online (Sandbox Code Playgroud)
当按下键盘上的“a”键时,字母是“a”加keypress,但它是“A”加keydown。
JCK 语言的情况变得更加复杂,因为keypress接收正确的国际键盘布局字符,而不是keydown将所有内容转换为单字节字符。
现在在 IME 组合过程中会触发 keydown 和 keyup 事件:https :
//www.fxsitecompat.com/en-CA/docs/2018/keydown-and-keyup-events-are-now-fired-during-ime-composition/
那么,随着keypress被弃用,当我们关心用户打算输入的字符时,我们应该使用什么,考虑大小写、非 ASCII 字符和多字节字符?
相关问题和参考:
keyup 事件总是返回大写字母
=> 答案推荐使用keypress.
String.fromCharCode 不适用于 keydown 事件
=> 答案建议使用keypress.
keypress 和 keydown 上的 String.fromCharCode 返回错误的字符
=> 答案指出keypress和keydown事件不可互换。
替换已弃用的 `keypress` DOM 事件
=> 答案建议使用keydown而不注意它在处理字母大小写、非 ascii 字符和多字节字符方面的区别。此外,建议的替代方案beforeinput似乎没有任何浏览器支持。
Firefox 版本 65+ 中 Keypress 事件的替代方案
=> 问题被简要否决,评论建议使用keydown或beforeinput不使用上述任何陷阱。
| 归档时间: |
|
| 查看次数: |
2048 次 |
| 最近记录: |