4

Firebug 1.5.4 JavaScript 警告:不应使用事件的“charCode”属性。keyup值是没有意义的。忽略它?有什么问题吗?

警告出现在 jQuery 1.4.2keyupkeydown,而不是keypress.
我已经阅读了有关更改event.keyCode并且event.charCode必须event.which修复它的内容,但它对我不起作用。http://jsfiddle.net/zTevK/2/
中的 完整代码示例和有问题 的我的代码使用并且不适用于.
keyupkeypress

  $(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();
  ...
4

3 回答 3

8

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,这反过来会创建您的警告...您甚至不需要在事件处理程序中执行任何操作(在 jsfiddle 上说明)...

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

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

于 2010-06-08T15:44:29.230 回答
3

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

于 2010-06-08T15:25:30.143 回答
0

尝试更改源 jquery-1.XXjs 中的 charCode -> XcharCode 并且一切正常

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

于 2010-12-15T18:08:54.557 回答