6

看看这个现场演示(来自 jQuery 的网站)。

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

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

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

4

1 回答 1

5

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

jQuery 规范化了属性名称(例如,always which,而不是whichkeyCode取决于浏览器),但不是属性的,这将更加复杂。

您从keydown/获得的键的值keyup不仅会因浏览器而异,还会因键盘布局而异。Jan Wolter的JavaScript Madness: Keyboard Events页面上有很多血淋淋的细节。除其他事项外,您可以在该页面上看到,对于该密钥,Firefox 将为您提供 109,IE(显然是 Chrome)将为您提供 189,而 Opera 显然曾经使用 45(但在我在 Linux 上的测试中,他们现在选择 109)。

对于可打印的击键(如-),最好使用keypress事件,它会为您提供结果字符

于 2013-08-12T10:42:25.037 回答