繁体   English   中英

HTML5音频-声音只能播放一次

[英]HTML5 Audio - Sound only plays once

我正在使用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并再次播放,如代码所示?

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

$('.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> 

尝试一下..基本上,重设src属性应按需要重设音频。

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

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

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

    return false;
});

似乎目前currentTime属性是只读的(并且在2011年,它的状态不会修复

但是,在(再次)在音频对象上设置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就足够了,您可能需要在设置过程中将其调用。

您可以使用php使用time()在网址末尾添加查询;

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

为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM