【问题标题】:Why jQuery's event.which gives different results in Firefox and Chrome?为什么 jQuery 的 event.which 在 Firefox 和 Chrome 中给出不同的结果?
【发布时间】:2013-08-13 05:21:20
【问题描述】:

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

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

This jQuery page 表示应该对event.which 进行标准化以实现跨浏览器的一致性。但是,这似乎不是真的。

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

【问题讨论】:

    标签: javascript jquery google-chrome firefox keycode


    【解决方案1】:

    这个 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 事件,它会为您提供生成的字符

    【讨论】:

    • 非常感谢您的澄清!
    • 从 jQuery 1.11 开始,jQuery 似乎并没有完全规范化 event.which 属性,至少在 FireFox 下是这样。从这里可以看出:jsbin.com/sozoqiro/1/edit?html,consoleevent.whichevent.keyCode 都有不同的值,具体取决于您按下的键。按下打印字符似乎会填充 e.which,而 Tab 键会填充 e.keyCode,而 Enter 键会填充 e.whiche.keyCode 相同的值。在 FireFox 中,未填充的属性值设置为 0
    • 在 Chrome 中,这似乎是规范化的,但 keypress 似乎不会触发 Chrome 中的 Tab 键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2016-03-14
    • 2019-02-16
    相关资源
    最近更新 更多