Javascript IE6/7中的jKey jQuery插件错误,试图在按下任何未使用的键时运行。如何对抗?
我正在当前项目中使用jKey jQuery插件。它只允许您在按键时轻松运行功能。下面是我的函数调用:Javascript IE6/7中的jKey jQuery插件错误,试图在按下任何未使用的键时运行。如何对抗?,javascript,jquery,jquery-plugins,jkey,Javascript,Jquery,Jquery Plugins,Jkey,我正在当前项目中使用jKey jQuery插件。它只允许您在按键时轻松运行功能。下面是我的函数调用: jQuery(document).jkey('left, right',function(key){ if(key == 'left'){ if (elementIndex == 0) { return; } question_nav(jQuery('.question-fieldset-active'), 'prev'); } else {
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和IE7中,除了左箭头或右箭头外,按下键盘上的任何其他键都会抛出一个令人讨厌的“错误消息:‘indexOf’为空或不是对象”错误。是否有办法捕获所有其他按键并返回;为避免出现这种情况,请检查
键=='right'
的条件,而不是仅使用else
,这可能会对您有所帮助
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');
}
});
不要只使用
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');
}
});
实际上,这是jKey本身的缺陷。我在项目中尝试使用时发现了这个bug。这是作为对象在数组中循环的典型问题: 第224行:
用于(y在键槽[x]中的位置)
解决方案是像传统循环一样遍历阵列:
for(var i = 0; i < keySplit.length; ++i)
for(变量i=0;i
所以你可以手动操作,或者从我的中获得“jquery.jkey.js”的固定版本,实际上这是jkey本身的错误。我在项目中尝试使用时发现了这个bug。这是作为对象在数组中循环的典型问题: 第224行:
用于(y在键槽[x]中的位置)
解决方案是像传统循环一样遍历阵列:
for(var i = 0; i < keySplit.length; ++i)
for(变量i=0;i
因此,你可以手动执行,或者从我的中获得“jquery.jkey.js”的固定版本。我是jkey的开发者,@shankarsangli回答下面的问题是否有帮助?如果不是的话,可能是一些bug。我不再真正支持IE6了,但我可以看看在IE8或其他浏览器中是否会出现同样的错误,如果是,请更正。看看这段代码是否有帮助。几天前我做了一些编辑。我目前没有IE6/7要测试,但请告诉我它是否有帮助:我是jKey的开发者,@shankarsangli回答下面的问题是否有帮助?如果不是的话,可能是一些bug。我不再真正支持IE6了,但我可以看看在IE8或其他浏览器中是否会出现同样的错误,如果是,请更正。看看这段代码是否有帮助。几天前我做了一些编辑。我目前没有IE6/7可供测试,但请告诉我它是否有帮助: