我正在研究java脚本中的键处理。我做了一些研究,我想知道我是否对键处理有正确的理解。
KeyDown / KeyUp事件 IE7 +和Firefox 3.5+支持按键和按键事件我没有查看早期版本的浏览器,但我猜他们也支持这些事件。
说键盘上的每个键总是有一个键码是正确的。
则charCode
keypress上有CharCode值。大多数键都有代表实际值的字符代码。某些键不会有与之关联的字符代码。例如。退格,删除,箭头键。
我是否正确地说,在keypress上,charcode将与键码相同?
活动顺序
此顺序是否因浏览器而异?例如,我有两个功能。首先绑定到KeyDown事件,第二个绑定到KeyPress事件。调用KeyPress事件意味着当我只希望其中一个事件工作时,也会调用KeyDown事件。
最后,我一直在考虑根据版本浏览器使用不同的键处理例程。例如:
这将引入额外的代码,但应简化维护。此外,在将来,当我想为不同的浏览器提供支持时,我可以简单地添加另一个例程,它不会影响现有的字符处理例程。
到目前为止,我一直在阅读http://www.quirksmode.org
答案 0 :(得分:7)
请参阅以下页面,他们将回答您的问题:
onkeydown event, onkeypress event, keyCode property, charCode property, which property
答案 1 :(得分:6)
Jan Wolter的以下文章从未让我失望过,而且我所看到的浏览器关键事件的最佳资源是http://unixpapa.com/js/key.html。它回答了你提出的所有问题。
有一点需要强调的是,通过谨慎使用关键事件属性,几乎肯定永远不会需要嗅探您的密钥处理代码中的特定浏览器。
答案 2 :(得分:0)
2015年更新:
According to MDN event.charCode
,event.keyCode
和event.which
均已弃用。 event.key
是检查已按下哪个键的最新且最热门的方式。
它看起来很容易使用,但浏览器支持并不完美。我们现在所拥有的只是Chrome 45+(尚未推出AFAIK),Firefox 23+和IE 9 +的部分支持。