10

我正在使用<audio>HTML5 中的标签播放 MP3。

<audio controls="controls" autoplay="autoplay">
  <source src="song.mp3" type="audio/mp3" />
</audio>

这很好用,但我想知道如何在歌曲开始自动播放之前延迟?我知道没有delay属性,但我认为它可以通过 javascript 来完成?

4

3 回答 3

17

试试这个,真的很简单,但你应该将 JS 移到标记之外......

<audio controls="controls" onloadeddata="var audioPlayer = this; setTimeout(function() { audioPlayer.play(); }, 8000)">
    <source src="Kalimba.mp3" type="audio/mp3" />
</audio>
于 2012-08-15T17:17:22.043 回答
7

仅 Javascript 方法:

var sound = document.createElement('audio')
sound.id = 'audio'
sound.controls = 'controls'
sound.src = 'http://a.tumblr.com/tumblr_leltkjNwWL1qf32t9o1.mp3'
sound.type = 'audio/mp3'
document.body.appendChild(sound)

function playAudio() {
  document.getElementById('audio').play();
}

setTimeout("playAudio()", 3000);

于 2012-08-15T17:02:33.613 回答
2

试试这个:

HTML:

<div id='audio'>This will be replaced with an audio tag</div>​

jQuery:​</p>

$(document).ready(​function (){
    $("#audio").stop("true").delay('2000').queue(function() { 
      $(this).html('<audio controls="controls" autoplay="autoplay"><source src="song.mp3" type="audio/mp3" /></audio>');
    });
});​

所有这些将是:

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    </head>
    <body>
        <div id='audio'>This will be replaced with an audio tag</div>
        <script type='text/javascript'>
            $(document).ready(function (){
                $("#audio").stop("true").delay('2000').queue(function() { 
                    $(this).html('<audio controls="controls" autoplay="autoplay"><source src="song.mp3" type="audio/mp3" /></audio>');
                });
            });
        </script>
    </body>
</html>

您可以使用.delay()jQuery 来延迟进程。时间以毫秒为单位,因此 2000 = 2 秒。

于 2012-08-15T17:05:24.217 回答