音频标签

213 阅读1分钟

音频标签入门基础


```<!DOCTYPE html>
<html lang="en">
<body>
    <!-- controls 默认控制台 -->
    <!-- loop 循环播放 -->
    <!-- muted 静音属性 -->
    <!-- autoplay 自动播放,谷歌浏览器不支持 -->
    <audio controls muted autoplay id="myaudio">
        <source src="旺仔小乔 - 春泥 (Live).mp3"></audio>
    </audio>
    <button id="bt1">播放</button>
    <span id="current">0:00</span>/
    <span id="duration"></span>
    <div class="progress">
        <div class="innerProgress"></div>
    </div>
    <button id="bt2">下一首</button>
    <button>上一首</button>
    <script>
        window.onload=function(){
            var arr=["旺仔小乔 - 春泥 (Live).mp3","邓超 _ 庾澄庆 - 让我一次爱个够.mp3"];
            var bt2=document.getElementById("bt2");
            var index=0;
            var source=document.getElementsByTagName("source")[0];
            bt2.onclick=function(){
                if(index==1){
                    index=0;
                }else{
                    index++;
                }
                source.src=arr[index];
                // 重新加载音频
                myaudio.load();
                bt1.innerHTML="暂停";
                // 音频加载完成触发的事件
                myaudio.oncanplay=function(){
                    time=myaudio.duration;
                    duration.innerHTML=changetime(time);
                }
            }
            var myaudio=document.getElementById("myaudio");
            // onended 监听音频是否完成播放
            // 音频播放完成是触发
            myaudio.onended=function(){
                if(index==1){
                    index=0;
                }else{
                    index++;
                }
                source.src=arr[index];
                // 重新加载音频
                myaudio.load();
                bt1.innerHTML="暂停";
                // 音频加载完成触发的事件
                myaudio.oncanplay=function(){
                    time=myaudio.duration;
                    duration.innerHTML=changetime(time);
                }
            }
            var bt1=document.getElementById("bt1");
            // 当前播放器的时间
            var time=myaudio.duration;
            
            var duration=document.getElementById("duration");
            var current=document.getElementById("current");
            var innerProgress=document.getElementsByClassName("innerProgress")[0];
            var progress=document.getElementsByClassName("progress")[0];
            function changetime(x){
                var min=parseInt(x/60);
                var s=Math.round(x%60);
                if(s<10){
                    s="0"+s;
                }else{
                    s=s;
                }
                var str=min+":"+s;
                return str;
            }
            duration.innerHTML=changetime(time);
            var t;
            bt1.onclick=function(){
                // 如果播放器为暂停状态
                // myaudio.paused 自带属性,判断播放器是否为暂停状态
                if(myaudio.paused){
                    // 改为播放状态
                    myaudio.play();
                    this.innerHTML="暂停";
                    t=setInterval(function(){
                        current.innerHTML=changetime(Math.ceil(myaudio.currentTime));
                        var currenttime=myaudio.currentTime;
                        innerProgress.style.width=(currenttime/time)*100+"%";
                    },1000)
                }else{
                    // 改为暂停状态
                    myaudio.pause();
                    this.innerHTML="播放";
                    clearInterval(t);
                }
            }
            progress.onmousedown=function(event){
                var e=event||window.event;
                var width=e.clientX-progress.offsetLeft;
                innerProgress.style.width=width+"px";
                current.innerHTML=changetime(width/300*time);
                myaudio.currentTime=width/300*time;
                progress.onmousemove=function(event){
                    var e=event||window.event;
                    var width=e.clientX-progress.offsetLeft;
                    innerProgress.style.width=width+"px";
                    current.innerHTML=changetime(width/300*time);
                    myaudio.currentTime=width/300*time;
                }
                progress.onmouseup=function(){
                    progress.onmousemove=null;
                }
            }
        }
    </script>
</body>
</html>