jKey Erreurs du plug-in jQuery dans IE6 / 7, tentative d’exécution chaque fois qu’une touche non utilisée est enfoncée Comment combattre?

J’utilise le plugin jKey jQuery sur un projet en cours. Il vous permet simplement d’exécuter facilement une fonction lors d’une pression sur une touche. Voici mon appel de fonction:

jQuery(document).jkey('left, right',function(key){ if(key == 'left'){ if (elementIndex == 0) { return; } question_nav(jQuery('.question-fieldset-active'), 'prev'); } else { if ((elementIndex + 1) == jQuery('.question-fieldset').length) { return; } question_nav(jQuery('.question-fieldset-active'), 'next'); } }); 

Dans IE6 et 7, une pression sur une touche du clavier autre que les flèches gauche ou droite génère un message d’erreur “Message d’erreur: ‘indexOf’ est nul ou n’est pas un object”. Existe-t-il un moyen de capturer tous les autres appuis sur les touches et de les renvoyer? sur eux pour éviter cela?

En fait, c’est un bug de jKey lui-même. J’ai trouvé ce bogue lorsque j’ai essayé de l’utiliser dans le projet. C’était un problème classique avec la boucle dans un tableau en tant qu’object:

ligne 224 : for(y in keySplit[x]) lors de la révision de GitHub

La solution consiste à traverser un tableau en boucle traditionnelle:

 for(var i = 0; i < keySplit.length; ++i) 

Donc, vous pouvez le faire manuellement ou obtenir une version fixe de 'jquery.jkey.js' à partir de ma révision de code Google

Au lieu d’utiliser simplement la condition else , recherchez la key == 'right' qui pourrait vous aider.

 jQuery(document).jkey('left, right',function(key){ if(key == 'left'){ if (elementIndex == 0) { return; } question_nav(jQuery('.question-fieldset-active'), 'prev'); } else if(key == 'right') { if ((elementIndex + 1) == jQuery('.question-fieldset').length) { return; } question_nav(jQuery('.question-fieldset-active'), 'next'); } });