HTML5音频 - 声音仅播放一次

时间:2012-02-17 21:20:40

标签: jquery google-chrome html5-audio

我正在使用Chrome,这是我的代码:

<audio id="letter_audio" src="audio/bomb.mp3" type="audio/mp3" preload="auto"></audio>

    $('.sound').live('click', function () {

        var sound = $("#letter_audio")[0];  

        sound.pause();
        sound.currentTime = 0;
        sound.play();

        return false;
    });

我第一次点击播放时声音是怎么播放的。然后,当我再次点击时,它会暂停,就像代码一样。但它只是暂停?我希望它能够播放,然后当我再次点击它时,回到0然后再按照代码再次播放?

4 个答案:

答案 0 :(得分:25)

我在播放音频方面遇到了类似的问题,但设法通过在load()调用之前调用play()方法来解决问题。试试这个:

$('.sound').live('click', function () {
    var sound = $("#letter_audio")[0];

    sound.load();
    sound.play();

    return false;
});

我认为这比重置src属性要好两个原因:

  1. 在页面内容中保留src值,而不是在JavaScript
  2. 嵌入不同音频格式的多个<source>元素时可以使用:

    <audio id="letter_audio">
       <source src="audio/bomb.mp3" type="audio/mp3" preload="auto"/>
       <source src="audio/bomb.ogg" type="audio/ogg" preload="auto"/>
    </audio>
    

答案 1 :(得分:3)

试试这个..基本上,重置src属性应该根据需要重置音频。

$('.sound').live('click', function () {

    var sound = $("#letter_audio")[0];  

    sound.src = "audio/bomb.mp3";
    sound.play();

    return false;
});

答案 2 :(得分:0)

目前看来,currentTime属性是只读的(2011年它有一个wont-fix status

然而,在你的音频对象上再次设置src之后 - 就像@Lloyd提出的那样 - currentTime属性变得可设置(至少在linux的当前chrome版本上(24.0.1312.69) )。

这意味着添加奇怪的行

audio.src = audio.src

你的例子做了它应该做的事。

完整:

$('.sound').live('click', function () {

    var sound = $("#letter_audio")[0];  
    sound.src = sound.src;  
    sound.pause();
    sound.currentTime = 0;
    sound.play();

    return false;
});

因为只需设置src一次,您可能希望在设置过程中将其调用到某处。

答案 3 :(得分:0)

您可以使用php在时间();

的网址末尾添加查询

<source src="URLtoTrack.mp3?<?php echo time(); ?>" />

适合我。