我正在处理keyup事件,需要输入字符。当我输入一个点时,data.keyCode是190,但是当我尝试使用String.fromCharCode(190)转换它时,我得到了“¾”符号。
This reference告诉我190是句号。 That one说我没有任何机会进行跨浏览器按键处理。那么,我该如何妥善处理呢?
答案 0 :(得分:5)
我正在处理keyup事件,需要输入字符。
那是不可靠的。在keyup
,您只能获得keyCode
而不是charCode
。
(如果您考虑一下这是有道理的:charCode
与在按键中键入的字符相关联,可以使用修饰键移动该字符,从而为基本键生成不同的字符; keyup
和keydown
,因为这些事件不会立即与正在键入的新字符相关联,所以不会生成已知字符。)
因此,如果您正在做一些依赖于知道是否输入.
字符的内容,则需要使用keypress
事件。
如果您想知道在某些常见键盘布局上标记为.
/ >
的抽象键何时发布,您可以使用{{1}执行此操作},使用unixpapa链接上列出的keyup
。像这样使用keyCode
通常用于游戏和其他功能,其中实际的键位置很重要,而不是键入时生成的字符。
不幸的是,浏览器对一些keyCodes造成了不一致的混乱,包括这个,所以你必须检查上面列出的所有可能的值,你不能可靠地区分主键盘周期,小键盘句点/删除键和主删除键。