拿着钥匙重复了它的目的

时间:2014-07-04 12:51:08

标签: javascript html

我遇到一个小问题,我在浏览器中使用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>

1 个答案:

答案 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事件。我不知道有任何捕获关键机制可以防止......