jQuery插件错误在IE6/7,试图运行任何未使用的键被按下.如何战斗

jKey jQuery plugin errors in IE6/7, attempting to run whenever any un-used key is pressed. How to combat?

本文关键字:未使用 任何 何战斗 运行 错误 插件 IE6 jQuery      更新时间:2023-09-26

我在当前项目中使用jKey jQuery插件。它只是让你可以轻松地按下一个键来运行一个功能。下面是我的函数调用:

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');
    }
});

在IE6和7中,按键盘上除了左或右箭头以外的任何其他键会抛出一个讨厌的"错误消息:'indexOf'是null或不是对象"错误。是否有一种方法可以捕获所有其他按键并返回;为了避免这种情况?

实际上这是jKey本身的bug。我发现了这个bug,当我试图在项目中使用。这是将array作为object:

进行循环的典型问题

<我> : 224行for(y in keySplit[x]) GitHub修订

解决方案是像传统的循环一样遍历数组:

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

所以你可以手动做,或者从我的谷歌代码修订

获得'jquery.jkey.js'的固定版本

而不是仅仅使用else条件检查key == 'right',以及这可能会帮助你。

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');
    }
});