【问题标题】:Firebug JS warning to jQuery 1.4.2 "The 'charCode' property of a keyup event should not be used. The value is meaningless." To ignore it?jQuery 1.4.2 的 Firebug JS 警告“不应使用 keyup 事件的 'charCode' 属性。该值没有意义。”忽略它?
【发布时间】:2011-03-01 03:10:36
【问题描述】:

Firebug 1.5.4 JavaScript 警告:不应使用keyupevent 的 'charCode' 属性。该值没有意义。 要忽略它?有什么问题吗?

警告出现在 jQuery 1.4.2 keyupandkeydown,而不是keypress
我在更改event.keyCodeandevent.charCodetoevent.whichmust fix 它时读到过,但它对我不起作用。
http://jsfiddle.net/zTevK/2/question 中的完整代码示例
我的代码使用keyup,不适用于keypress

  $(document).bind('keyup', function(e){
   var key = e.which;
   if (key > 36 && key < 41) {
    if (key == 37) { changeTab(-1); }
    if (key == 38) { changeTab(-imgPerRow); }
    if (key == 39) { changeTab(+1); }
    if (key == 40) { changeTab(+imgPerRow); }
    e.preventDefault();
  ...

【问题讨论】:

  • 这是正常的,我不知道为什么 FireBug 会用这个垃圾邮件错误日志,但我从未见过它影响任何东西,也许其他人有。
  • 我昨天在测试我写的答案时注意到了这一点。但是,它并没有停止我的代码或阻止它工作。
  • 我在您的示例中没有看到此错误。
  • 在我的萤火虫中使用 live keyup 时出现同样的警告。

标签: jquery firebug keypress keydown


【解决方案1】:

jQuery 代码本身规范化jQuery.event.fix 中的每个事件

// props includes 'charCode' - this will access it
for ( var i = this.props.length, prop; i; ) {
  prop = this.props[ --i ];
  event[ prop ] = originalEvent[ prop ];
}

// also, later in the same function

// Add which for key events
if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
  event.which = event.charCode || event.keyCode;
}

其中一行代码将访问charCode,这反过来会产生您的警告...您甚至不需要在事件处理程序中执行任何操作 (illustrated on jsfiddle)...

我通常最终使用的“解决方案”只是在没有 JS 警告的情况下运行(错误仍然出现)

您可以放心地忽略此消息(假设您没有使用charCode,并且确实在使用which

【讨论】:

  • 没错,它的警告是准确的,jQuery 在决定使用 charCode 或 keyCode 时检查 charCode 属性本身,并在规范化其事件时。如果您总是使用e.which,则可以安全地忽略该警告。
  • @Binyamin:jQuery 错了。对于keydownkeyup 事件,它不应该对charCode 做任何事情。
【解决方案2】:

尝试更改源 jquery-1.X.X.js 中的 charCode -> XcharCode,一切正常

在最新版本 1.4.4 中有“4”次出现...

【讨论】:

    【解决方案3】:

    这是来自 Mozilla 代码的非常常见的错误消息。每次击键都会显示该消息,如果您打开错误控制台,可能会导致性能问题。我已经向 mozilla 抱怨过这个和类似的消息,但没有任何效果。 jjb

    【讨论】:

    • 这是一个有用的警告。在我的书中,任何有助于缓解开发人员对keypresskeydownkeyup 事件角色之间的混淆的东西都是一件好事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2016-08-27
    • 1970-01-01
    • 2019-05-25
    相关资源
    最近更新 更多