如何防止用箭头键滚动,而不是鼠标?

由于我使用jQuery,所以任何解决scheme都可以。 理想情况下,我想知道两个,但。

我已经有箭头键绑定到我的页面上的另一个function(使用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; }); 

在某些情况下,例如。 当你实际上没有一个你关注的元素时,只需要点击某个区域,你可能不会对这个处理程序有太多的控制,并且在全球范围内防止这个事件可能会有点片面(就像我发现的那样走出困境)。

在这些情况下,最简单的解决scheme是绑定点击甚至控制button,并集中在一个空的input元素,你在-9000px的左侧。

然后,您可以通过keydown可靠地阻止事件,也不必担心阻止默认行为或其他全局侦听器,因为input元素上的默认行为只会将光标移到左侧和右侧。

如果你添加一个文档级别的按键处理程序,它会阻止在任何时候在页面上的正常滚动,不仅当你的元素有焦点,这可能是一个不希望的效果。