关于html5的炒作已经有一段时间了,小弟亦是个跟风之人,对该新鲜事物也充满好奇和期待。本文为该系列(HTML5尝鲜)第一节,先以一个简单的demo开胃,希望能勾起各位同学对html5的兴趣和关注。

  html5里有一个新标签audio,该标签用以定义声音,比如音乐或其他音频流。
 既然audio标签可以播放音频,那我们可以不再使用flash、wmp等其他任何第三方组件,轻而易举的使用纯html来打造一个音乐播放器。

  例子:

<audio src="someaudio.MP3"></audio>

  或

<audio >
 <source src="someaudio.MP3"/>   </audio>

  下面是小弟用audio做的一个音乐播放器的界面,先睹为快:

   

html5做音乐播放列表 html做音乐播放器_播放器

 

   audio 有几个属性:
          src:String型,所播放音频的 url。
          autoplay:bool型,如果是 true,则音频在就绪后马上播放。默认为false。
          controls:bool型,如果是 true,则向用户显示控件,比如播放按钮。默认为false。
          更多详细属性:http://www.w3school.com.cn/html5/html5_audio.asp

  audio 有几个事件:
          onended:当媒介已抵达结尾时运行脚本,也就是当前歌曲播放完了,这里的“媒介”是指audio标签。
          onloadstart:当浏览器开始加载媒介数据时运行脚本。
          onplay:当媒介数据将要开始播放时运行脚本。这里的“媒介数据”是指播放的文件。
          onplaying:当媒介数据已开始播放时运行脚本。
          onpause:当媒介数据暂停时运行脚本。
          onerror:当加载媒介数据出错时运行的脚本。(w3school不是这样解释的)
          更多详细事件:http://www.w3school.com.cn/html5/html5_ref_eventattributes.asp#Media_Events

 
打造该播放器的完整代码如下:


<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head  runat ="server" >
     < title > 无标题页 </ title >
     < style  type ="text/css" >
    body
     {  font-size : 13px ;
      font-family : 宋体 ;
     }
    #ul_musicList
     {
      width : 300px ;
      list-style-type : none ;    
      margin : 5px 0 3px 0 ;
      padding : 0px ;     
     }   
     #ul_musicList li
      {
          padding : 5px ;
          border : solid 1px #EEEEEE ;
      }    
     </ style >
     < script  src ="Scripts/jquery-1.3.2.js"  type ="text/javascript" ></ script >
     < script  src ="Scripts/MusicBox.js"  type ="text/javascript" ></ script >
     < script  type ="text/javascript" >
     var  mb = null ;
    $().ready( function (){
    mb = new  MusicBox();
    mb.init();
    });
     </ script >
</ head >
< body  >
     < div >
   < audio  id ="musicBox"   controls ="true"  
    onended ="mb.nextMusic()"  
    onloadstart ="mb.loadStart()"  
    onplaying ="mb.playing()"  
    onpause ="mb.pausePaly()"  
    onerror ="mb.loadError()"
     >
   </ audio >  
   < br  />   < input  id ="btnNext"  type ="button"  value ="下一首"  onclick ="javascript:mb.nextMusic()"    />
   < span  id ="sn_status" ></ span >< br  />  
   < div  style =" margin-top:5px" > 歌曲列表: </ div >
     < ul  id ="ul_musicList"    >
   </ ul >
  < div  style ="width:300px; text-align:right" >
       播放模式: < select  id ="slt_playMode" >
             < option  value ="1" > 全部循环 </ option >
             < option  value ="2" > 单曲循环 </ option >
         </ select >
         </ div >
   </ div >
</ body >
</ html >
复制代码
 

复制代码
 MusicBox.js
MusicBox = function  (){
     var  _this = this ;
     var   media =  document.getElementById( " musicBox " ); 
     var   musicFiles = [
                   {name: " 犯错 " ,url: " http://www.yandui.com/upload/sound/2009-9-20/20_34_25_953_.mp3 " } ,
                   {name: " 天使的翅膀 " ,url: " http://www.masradio.com.cn/uploadfile/program/uploadfile/200805/20080522090800196.mp3 " },
                   {name: " 无名轻音乐 " ,url: " http://audio.ngfiles.com/88000/88260_Zanarkan_Mastered_Piano_Ve.mp3 " },
                   {name: " 之歌 " ,url: " http://www.cnblogs.com " }, // 错误的资源
                   {name: " 相思风雨中 " ,url: " http://www.czopen.com/club/forum/files/247.mp3 " }
                   ];
     // 当前正在播放的歌曲的索引               
     var  index =- 1 ;
     // 当前正在播放的歌曲
     var  playingFile = null ;
     // 播放模式
     var  playMode = 1 ;
     // 下一首
     this .nextMusic = function (){
        if (playMode == " 1 " ){
            index += 1 ;
        }
         if (index == musicFiles.length){
            index = 0 ;
        }
        playingFile = musicFiles[index];
        media.setAttribute( " src " ,playingFile.url); 
        media.play();
        $( " #ul_musicList " ).children().css({ " background-color " : " #FFF " , " border " : " solid 1px #EEEEEE " , " color " : " #000 " });
        $( $( " #ul_musicList " ).children()[index]).css({ " background-color " : " #2C7DE2 " , " border " : " solid 1px #206DDF " , " color " : " #FFF " });
     
    }
     // 加载
     this . loadStart = function (){
        $( " #sn_status " ).text( " 加载中.... " );
    }
     // 播放
     this . playing = function (){
         $( " #sn_status " ).text( " 当前正在播放: " + playingFile.name);
    } 
     // 暂停
     this . pausePaly = function (){
         $( " #sn_status " ).text( " 暂停: " + playingFile.name);
    }
     // 加载出错
     this . loadError = function (){
        $( " #sn_status " ).text( " 加载“ " + playingFile.name + " ”失败,可能资源不存在~ " );
    }
     // 初始化
     this .init = function (){
         for ( var  a  in  musicFiles){
        $( " #ul_musicList " ).append( " <li> " + musicFiles[a].name + " </li> " );
        }
        _this.nextMusic();
        $( " #slt_playMode " ).change( function (){
        playMode = $( " #slt_playMode " ).val();
        });
    }
}
复制代码

 

如果您能在下面看到播放器并听到背景音乐,那说明您当前使用的浏览器支持HTML5 。


 示例源码下载(建议使用 Google Chrome测试)