我正在使用jKey,但在IE8中我收到此错误:
'length' is null or not an object
每当我按某些键时。似乎每当我按下一个尚不存在的密钥时(如果我从未为a
设置任何内容,则会出现错误消息)。但是,我确实为enter
设置了一个关键命令,但它仍在执行它。
导致错误的问题是:
if($.inArray(e.keyCode,keySplit[x]) > -1){
// Initiate the active variable
var active = 'unchecked';
// All the individual keys in the combo with the keys that are currently being pressed
for(y in keySplit[x]) {
if(active != false) {
if($.inArray(keySplit[x][y], activeKeys) > -1){
active = true;
}
else {
active = false;
}
}
}
错误发生在第一行。知道keySplit[x]
在没有任何内容时返回typeof
number
或者密钥快捷方式只是一个密钥,我补充道:
if(typeof(keySplit[x]) == 'number'){ keySplit[x] = [keySplit[x]]; }
在上面的代码块正上方。
之后它在Chrome和FF中工作,但仍然不是IE。我也尝试过:
if(typeof(keySplit[x]) == 'number'){ keySplit[x] = new Array(keySplit[x]); }
if(typeof(keySplit[x]) == 'number'){ keySplit[x] = [keySplit[x].toString()]; }
if(typeof(keySplit[x]) == 'number'){ keySplit[x] = new Object(keySplit[x]); }
但它们都没有工作。导致错误的jQuery代码是:
inArray: function( elem, array ) {
if ( indexOf ) {
return indexOf.call( array, elem );
}
for ( var i = 0, length = array.length; i < length; i++ ) {
if ( array[ i ] === elem ) {
return i;
}
}
return -1;
},