Я использую 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;
},