JavaScript密钥处理和浏览器兼容性

10 javascript cross-browser onkeypress onkeydown dom-events

我正在研究java脚本中的键处理.我做了一些研究,我想知道我是否对键处理有正确的理解.

KeyDown/KeyUp事件 IE7 +和Firefox 3.5+支持按键和按键事件我没有查看早期版本的浏览器,但我猜他们也支持这些事件.

说键盘上的每个键总是有一个键码是正确的.

则charCode

keypress上有CharCode值.大多数键都有表示实际值的charcodes.某些键不会有与之关联的字符代码.例如退格键,删除键,箭头键.

我是否正确地说,在keypress上,charcode将与keycode相同?

活动顺序

  • 的KeyDown
  • 按键
  • KEYUP

这个订单是否因浏览器而异?例如,我有两个功能.首先绑定到KeyDown事件,第二个绑定到KeyPress事件.调用KeyPress事件意味着当我只希望其中一个事件工作时,也会调用KeyDown事件.

最后,我一直在考虑根据版本浏览器使用不同的键处理例程.例如:

  • 检查浏览器版本
  • 根据浏览器版本获取密钥处理例程

这将引入额外的代码,但应简化维护.此外,在将来,当我想为不同的浏览器提供支持时,我可以简单地添加另一个例程,它不会影响现有的字符处理例程.

到目前为止,我一直在阅读http://www.quirksmode.org

gum*_*ape 7

请参阅以下页面,他们将回答您的问题:

onkeydown事件, onkeypress事件, keyCode属性, charCode属性, 属性


Tim*_*own 6

Jan Wolter的以下文章从来没有让我失望,并且是我见过的浏览器关键事件的最佳资源:http://unixpapa.com/js/key.html.它回答了你提出的所有问题.

需要强调的一点是,通过谨慎使用关键事件属性,您几乎肯定不需要在密钥处理代码中嗅探特定的浏览器.