Firebug 1.5.4
JavaScript警告:不应使用akeyupevent的’charCode’属性.价值毫无意义.忽略它?有什么问题吗?
警告出现在jQuery 1.4.2 keyupandkeydown上,而不是onkeypress.
我已经读过changingevent.keyCodeandevent.charCodetoevent.which必须修复它,但它对我不起作用.
完整代码示例在http://jsfiddle.net/zTevK/2/和question中
我的代码使用了keyup并且不能使用key.
$(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(); ...
解决方法
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,而charCode又会创建警告……您甚至不需要在事件处理程序中执行任何操作(illustrated on jsfiddle)…
我通常最终使用的“解决方案”只是在没有JS警告的情况下运行(错误仍然显示)
Turning off Warnings http://img8.imageshack.us/img8/5530/screenshot20100608at104.png
您可以安全地忽略此消息(假设您没有使用charCode,并且确实正在使用哪个)