以下代码可有效防止浏览器默认在Chrome和Safari中触发。但是,出于某种原因,即使按下Firefox中的箭头键,我的代码也不会触发。
$(window).keydown(function(e) {
switch(e.which){
case 39: //right arrow key
e.preventDefault();
$('body').scrollLeft(scrollNow + z(10));
break;
case 37: // left arrow key
e.preventDefault();
$('body').scrollLeft(scrollNow - z(10));
break;
}
});
我也尝试了return false;
而不是e.preventDefault();
,但没有效果。我也尝试将e.preventDefault();
放在scrollLeft
行之后,但它也没有用。有什么想法吗?
答案 0 :(得分:2)
试试这个 -
code = e.keyCode || e.which;
switch(code){
答案 1 :(得分:2)
试试这个:
$(window).keydown(function(e) {
switch(e.keyCode){
case 39: //right arrow key
e.preventDefault();
$('body').scrollLeft(scrollNow + z(10));
break;
case 37: // left arrow key
e.preventDefault();
$('body').scrollLeft(scrollNow - z(10));
break;
}
});
答案 2 :(得分:1)
我刚才遇到过这个问题。我为select输入的keydown事件添加了一个事件监听器,以禁止左/右键分别遍历顶部/右侧选项。它在Chrome和IE中完美运行。根据我所读到的内容,到目前为止,它肯定是一个bug,对于是否真的将其视为一个错误进行了大量的辩论和猜测。我甚至将上一个事件监听器附加到前面提到的选择输入中用于键盘;在keydown事件(Firefox)中调用preventDefault后,我注意到它也在触发。但是,不会阻止该操作。非常讨厌。
仍在尝试确定解决方法。
答案 3 :(得分:0)
试试这个,
<强>更新强>
$(window).keydown(function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
switch(code){
case 39: //right arrow key
e.preventDefault();
$('body').scrollLeft(scrollNow + z(10));
break;
case 37: // left arrow key
e.preventDefault();
$('body').scrollLeft(scrollNow - z(10));
break;
}
});