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

pup*_*eno 7 javascript keyboard events 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;
  }
});
Run Code Online (Sandbox Code Playgroud)

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

Rah*_*lar 8

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

  • 不确定是否适用于这种情况 (2认同)

Tim*_*own 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;
  }
});
Run Code Online (Sandbox Code Playgroud)


bra*_*jam 5

Prototype文档:

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

因此在添加Event.stop(e);之前break;应该解决您的问题.

此外,你应该为这次keydown活动做这件事,因为keyup为时已晚.