Предупреждение Firebug JS для jQuery 1.4.2 Не следует использовать свойство charCode события keyup. Значение бессмысленно. Игнорировать?

Предупреждение Firebug 1.5.4 JavaScript: Не следует использовать свойство charCode события akeyupevent. Значение бессмысленно. Игнорировать? Возникла проблема?

Предупреждение появляется для jQuery 1.4.2 keyupиkeydown, а не дляkeypress.
Я читал, что при измененииevent.keyCodeиevent.charCodeнаevent.whichнужно исправить, но у меня это не работает.
> Полный пример кода в http://jsfiddle.net/zTevK/2/ и в вопрос
Мой код использует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();
  ...

person Binyamin    schedule 08.06.2010    source источник
comment
Это нормально, я понятия не имею, почему FireBug спамит журнал ошибок этим, но я никогда не видел, чтобы это на что-то влияло, может быть, у кого-то еще.   -  person Nick Craver    schedule 08.06.2010
comment
Я заметил это вчера, проверяя ответ, который я написал. Однако это не остановило мой код и не помешало ему работать.   -  person Andy E    schedule 08.06.2010
comment
Я не вижу этой ошибки в вашем примере.   -  person Sam    schedule 08.06.2010
comment
У меня такое же предупреждение при использовании live keyup в моем firebug.   -  person Pedro Luz    schedule 11.03.2011


Ответы (3)


Сам код 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 (ошибки все равно появляются) < img src="https://i.stack.imgur.com/4XniK.png" alt="Отключение предупреждений">

Вы можете смело игнорировать это сообщение (при условии, что вы не используете charCode и действительно используете which).

person gnarf    schedule 08.06.2010
comment
Это не так, его предупреждение точное, jQuery сам проверяет свойство charCode при принятии решения об использовании charCode или keyCode и при нормализации своего события. Предупреждение можно безопасно игнорировать, если вы всегда используете e.which. - person gnarf; 10.06.2010
comment
@Binyamin: jQuery неверен. Он не должен ничего делать с charCode для событий keydown или keyup. - person Tim Down; 03.10.2010

Это очень распространенное сообщение об ошибке, которое появляется в коде Mozilla. Сообщение появляется при каждом нажатии клавиши и может привести к проблемам с производительностью, если у вас открыта консоль ошибок. Я жаловался в Mozilla на это и подобные сообщения, но безрезультатно. jjb

person johnjbarton    schedule 08.06.2010
comment
Это полезное предупреждение. Все, что помогает облегчить путаницу в умах разработчиков между ролями событий keypress и keydown и keyup, является хорошей вещью в моей книге. - person Tim Down; 04.10.2010

попробуйте изменить charCode -> XcharCode в исходном коде jquery-1.X.X.js, и все работает нормально

в последней версии 1.4.4 есть "4" вхождения...

person Sk.    schedule 15.12.2010