为什么一个新的音频文件已经开始播放? (JS)

时间:2015-06-09 22:06:35

标签: javascript if-statement audio playback

我不知道为什么,但我无法弄清楚为什么这不起作用。我已经坐了几个小时尝试不同的方法,阅读和观看关于这个主题的视频,但我仍然无法弄明白。

问:为什么每次点击元素时,“新”音频文件都会开始播放,重叠前一个音频文件?我的if语句不应该处理吗?

document.getElementById("chatWrapper").addEventListener("click", playSound);

function playSound() {
    //alert("Success!");
    var sEE0 = new Audio('../sound/00-menu-music.mp3');
        sEE0.volume = 0.2;
    if (sEE0.duration > 0) {

        return;
    } else {
        sEE0.play();
    }
}

我该如何解决这个问题? 提前谢谢!

2 个答案:

答案 0 :(得分:0)

每次点击时,您似乎都在创建新的音频元素。

尝试只将其初始化一次:(对,快速' n'脏!)

document.getElementById("chatWrapper").addEventListener("click", playSound);
var sEE0 = new Audio('../sound/00-menu-music.mp3');
function playSound() {
    //alert("Success!");
    sEE0.volume = 0.2;
    if (sEE0.duration > 0) {
        return;
    } else {
        sEE0.play();
    }
}

答案 1 :(得分:0)

像@frontend_dev说的那样,你的一个问题是变量作用域,另一个是你正在使用sEE0.duration进行检查,但这会给你音频文件的长度,它必然大于{{ 1}},可能就是为什么它没有播放,你要找的是0,if条件应该是currentTime

但我更愿意检查音频是播放还是暂停,而不是检查音频播放的部分(除非用例要求)

我会将代码重写为:

if (sEE0.duration > 0) {