为什么jQuery的event.which在Firefox和Chrome中给出了不同的结果?

时间:2013-08-11 23:41:56

标签: jquery keycode which

看一下this live demo(来自jQuery的网站)。

在Firefox中点击-(破折号)表示event.which173,而在Chrome中执行此操作会产生189

This jQuery page表示event.which应该针对跨浏览器的一致性进行规范化。但是,看起来这不是真的。

为什么会出现这种不一致的情况?

1 个答案:

答案 0 :(得分:5)

  

这个jQuery页面说明了event.which应该规范化以实现跨浏览器的一致性。但是,看起来这不是真的。

jQuery规范化属性 name (例如,总是which,而不是whichkeyCode,具体取决于浏览器),而不是属性,这将会非常复杂。

您从keydown / keyup获得的密钥值不仅会因浏览器而异,还会受键盘布局的影响。 Jan Wolter在JavaScript Madness: Keyboard Events页面上有很多血腥的细节。除此之外,你可以在那个页面上看到,对于那个键,Firefox会给你109,IE(显然是Chrome)会给你189,而Opera显然习惯用45(但在我的Linux测试中,他们现在和109)一起去。

对于可打印的键击(例如-),您最好使用keypress事件,该事件会为您提供生成的字符