javascript - 捕获多个 "onkeydown"并等待 "onkeyup"执行

标签 javascript events keyboard

在我的网络应用程序中,我使用 onkeydown 事件来捕获击键。

例如,我捕获“j”键来动画向下滚动页面(并同时执行一些其他操作)。

我的问题是用户可能会按住“j”键以进一步向下滚动页面(这相当于快速多次击键)。

在我的应用程序中,这会导致一系列看起来不太好的动画。

我如何知道按键何时被释放,并知道我应该捕获的按键数量?这样我就可以运行一个长动画而不是多个短动画。

最佳答案

构建于 @JMD :

var animate = false;

function startanimation()
{
  animate = true;
  runanimation();
}

function stopanimation()
{
  animate = false;
}

function runanimation()
{
  if ( animation_over )
  {
    if ( !animate )
    {
      return;
    }

    return startanimation();
  }

  // animation code

  var timeout = 25;
  setTimeout(function(){runanimation();},timeout);
}

document.onkeydown = startanimation;
document.onkeyup   = stopanimation;

但是,您需要为开始/结束动画添加一些检查。

编辑:在JS中添加了return;会无限递归。

关于javascript - 捕获多个 "onkeydown"并等待 "onkeyup"执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/543854/

相关文章:

javascript - 使 jQuery Waypoints 无法与 JavaScript 创建的内容很好地配合

javascript - 如何通过 ajax 将 javascript 数组传递给 YII 操作

events - 如何处理 MFC 中的按键操作?

隐藏软键盘后,Android 应用程序不刷新

javascript - 强制使用自定义/货币模式的 iOS 数字键盘

javascript - 是否可以使用三元运算符执行多个操作

javascript - 谷歌地图 : How to get GMap2 object after initialized?

javascript - 检查任何 DOM 元素的附加事件处理程序

javascript - 执行函数的同时监听变化的值

每天特定时间的 MySQL 事件调度程序