代码之家  ›  专栏  ›  技术社区  ›  Daddy Warbox

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

  •  34
  • Daddy Warbox  · 技术社区  · 15 年前

    因为我使用的是jquery,所以任何通过它的解决方案都可以工作。理想情况下,我想知道两者。

    我已经将箭头键绑定到了页面上的另一个函数(使用jquery),但如果使用箭头键,页面就会滚动,除此之外,还会出现问题。

    我可能一次就知道这个,但我不记得了。

    3 回复  |  直到 10 年前
        1
  •  77
  •   phihag    13 年前

    添加文档级的按键处理程序就是这样!

    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;
    });
    
        2
  •  2
  •   srcspider    10 年前

    在某些情况下,例如,当你实际上没有一个你关注的元素时,仅仅是你必须点击的某个区域,你可能对处理程序没有太多的控制,并且在全局级别阻止事件充其量可能有点不稳定(正如我发现的困难的方法)。

    在这些情况下,最简单的解决方案是在控件按钮的单击偶数上绑定,并将焦点放在一个空的输入元素上,该元素位于左侧-9000px。

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

        3
  •  1
  •   JVitela    10 年前

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