防止 JavaScript keydown 事件在按住时被多次处理

新手上路,请多包涵

我有这段代码:

 else if (e.keyCode == 32){
      fired = true;

在 keyDown 函数中(我添加了 document.addEventListener 代码)。现在它工作得很好,并且完全按照我的意愿去做。但这就是问题所在:如果您 按住 该键,它会不断地不断使 fired = true 不断变化,直到它被释放。我只是想让它设置 fired = true;一次,即使键被按住。

原文由 Chris 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 308
1 个回答

编辑:现在每个浏览器都完全支持它。除了 Internet Explorer

如果浏览器兼容性不是您主要关心的问题* ,您可以尝试访问 .repeat 的 --- KeyboardEvent --- 属性,如下所述:

https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat

通过在你的处理函数中做这样的事情:

 function keyDown (e) {
  if (e.repeat) { return }

  // do stuff here
}

你可以避免重复击键。


*: 在MDN网站上说在Firefox中可以使用,我在Chrome中成功使用过,所以两大浏览器应该没有问题

原文由 Isti115 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题