You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写JavaScript函数实现按键按下播音效、松开即停并解决运行异常

按键音效功能修复方案

问题根因

  • 仅监听了keydown事件,按住按键时该事件会持续重复触发,导致engineSound.play()被反复调用,大量音频播放请求堆积占用浏览器资源,最终引发页面冻结
  • 未监听keyup事件添加音频停止逻辑,因此松开按键后音效依然持续播放

修复代码

// 定义播放状态标记,避免重复触发播放
let isPlaying = false;

window.addEventListener('keydown', (e) => {
  // 跳过按键按住时的重复触发事件,以及已经在播放的状态
  if (e.repeat || isPlaying) return;
  engineSound.play();
  isPlaying = true;
});

window.addEventListener('keyup', () => {
  // 停止播放并重置播放进度到起始位置
  engineSound.pause();
  engineSound.currentTime = 0;
  isPlaying = false;
});

优化提示

如果音频首次播放存在延迟,可给对应的<audio>标签添加preload="auto"属性,提前加载音频资源。

内容的提问来源于stack exchange,提问作者Efua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:54:03