我遇到一个小问题,我在浏览器中使用JavaScript制作钢琴,并使用键盘键。我只需要javascript,jquery现在不适合我。
问题是,当我按住一个键时, noise 声音会不断重复,我希望它每按一次只播放一次,即使按住它几秒钟也是如此。
我该怎么做?
<audio id="do">
<source src="do.mp3" type="audio/mp3"></audio>
<script>
var do1 = document.getElementById('do');
function load1()
{
do1.load();
}
document.addEventListener('keydown',function(event) {
if(event.keyCode == 90) {{do1.load()
do1.play();
}}
});
</script>
答案 0 :(得分:0)
在第一次按键(按键事件)上添加一个标志,该按键会在按键事件中重置,并防止后续按键事件触发多次,而不会同时释放按键。
var prevent = false;
document.addEventListener('keydown',function(event) {
if(event.keyCode == 90 && !prevent) {
prevent = true;
do1.load()
do1.play();
}
});
document.addEventListener('keyup',function(event) {
prevent = false;
});
但是,问题可能是在释放密钥之前将焦点设置在别处时可能无法接收到keyup事件。我不知道有任何捕获关键机制可以防止......