当拦截按空格和箭头等按键时停止滚动页面

时间:2010-10-02 09:08:28

标签: javascript events keyboard scroll prototypejs

我正在使用JavaScript和Prototype并从用户那里获取按键。我用这样的代码成功地捕获了返回,空格和箭头:

Event.observe(window, "keyup", function(e) {
  switch (e.keyCode) {
    case Event.KEY_RETURN:
    case Event.KEY_RIGHT:
    case 32:  // space
      // do something
      break;
  }
});

我的问题是空格和箭头一直在滚动页面。有没有办法阻止他们滚动页面?

4 个答案:

答案 0 :(得分:8)

使用e.preventDefault()停止浏览器的默认行为

答案 1 :(得分:6)

keyup中阻止默认浏览器操作为时已晚。请在keydown事件中执行此操作,并使用Prototype的Event.stop方法:

Event.observe(document, "keydown", function(e) {
  switch (e.keyCode) {
    case Event.KEY_RETURN:
    case Event.KEY_RIGHT:
    case 32:  // space
      // do something
      Event.stop(e);
      break;
  }
});

答案 2 :(得分:5)

来自the Prototype documentation

  

Event.stop(event)
停止事件的传播并阻止其传播   触发默认操作   最终

因此,在Event.stop(e);之前添加break;可以解决您的问题。

另外,您应该针对keydown事件执行此操作,因为keyup为时已晚。

答案 3 :(得分:0)

e.preventDefault()适用于Chrome。