由于我使用的是 jQuery,因此任何解决方案都可以。不过,理想情况下,我想知道两者。
我已经将箭头键绑定到我的页面上的另一个功能(使用 jQuery),但是除此之外让它们导致页面滚动,这给我带来了问题。
我可能曾经知道这一点,但我已经不记得了。
由于我使用的是 jQuery,因此任何解决方案都可以。不过,理想情况下,我想知道两者。
我已经将箭头键绑定到我的页面上的另一个功能(使用 jQuery),但是除此之外让它们导致页面滚动,这给我带来了问题。
我可能曾经知道这一点,但我已经不记得了。
添加文档级按键处理程序可以解决问题!
var ar=new Array(33,34,35,36,37,38,39,40);
$(document).keydown(function(e) {
var key = e.which;
//console.log(key);
//if(key==35 || key == 36 || key == 37 || key == 39)
if($.inArray(key,ar) > -1) {
e.preventDefault();
return false;
}
return true;
});
在某些情况下,例如。当你实际上没有你关注的元素时,只是你必须点击的某个区域,你可能对处理程序没有太多控制权,并且在全局级别阻止事件充其量可能有点不稳定(正如我发现的那样走出困境)。
在这些情况下,最简单的解决方案是在控制按钮的单击时绑定,并将焦点放在您将 -9000px 放置在左侧的空输入元素上。
然后,您可以通过 keydown 可靠地阻止事件,并且不必担心阻止默认行为或其他全局侦听器,因为输入元素上的默认行为只会将光标左右移动。
如果您添加文档级按键处理程序,它将随时阻止页面上的正常滚动,不仅当您的元素具有焦点时,这可能是不希望的效果。