html5 自定義播放器核心代碼

字號:


    HTML5提供有新的video標(biāo)簽,可以不用編程直接播放video,只需要寫幾行簡單的代碼, 就可以自定義播放器
    網(wǎng)頁html
    代碼如下:
    <body>
    <section id="skin">
    <video id="myMovie" width="640" height="360">
    <source src="videos/Introduction.mp4">
    </video>
    <nav>
    <div id="buttons">
    <button type="button" id="playButton">Play</button>
    </div>
    <div id="defaultBar">
    <div id="progressBar"></div>
    </div>
    <div></div>
    </nav>
    </section>
    </body>
    css樣式
    代碼如下:
    body{
    text-align:center;
    }
    header,section,footer,aside,nav,article,hgroup{
    display:block;
    }
    #skin{
    width:700px;
    margin:10px auto;
    padding:5px;
    background:red;
    border:4px solid black;
    border-radius:20px;
    }
    nav{
    margin:5px 0px;
    }
    #buttons{
    float:left;
    width:70px;
    height:22px;
    }
    #defaultBar{
    position:relative;
    float:left;
    width:600px;
    height:14px;
    padding:4px;
    border:1px solid black;
    background:yellow;
    }
    /*progressBar在defaultBar內(nèi)部*/
    #progressBar{
    position:absolute;
    width:0px; /*使用javascript控制變化*/
    height:14px; /*和defaultBar高度相同*/
    background:blue;
    }
    javascript代碼
    代碼如下:
    function doFisrt()
    {
    barSize=600; //注意不要使用px單位,且不要用var,是全局變量
    myMovie=document.getElementById('myMovie');
    playButton=document.getElementById('playButton');
    bar=document.getElementById('defaultBar');
    progressBar=document.getElementById('progressBar');
    playButton.addEventListener('click',playOrPause,false); //第三個參數(shù)總是false, Register the event handler for the bubbling phase.
    bar.addEventListener('click',clickedBar,false);
    }
    //控制movie播放和停止
    function playOrPause(){
    if(!myMovie.paused && !myMovie.ended){
    myMovie.pause();
    playButton.innerHTML='Play';
    window.clearInterval(updatedBar);
    }else{
    myMovie.play();
    playButton.innerHTML='pause';
    updatedBar=setInterval(update,500);
    }
    }
    //控制進(jìn)度條的動態(tài)顯示
    function update(){
    if(!myMovie.ended){
    var size=parseInt(myMovie.currentTime*barSize/myMovie.duration);
    progressBar.style.width=size+'px';
    }else{
    progressBar.style.width='0px';
    playButton.innerHTML='Play';
    window.clearInterval(updatedBar);
    }
    }
    //鼠標(biāo)點擊進(jìn)度條控制方法
    function clickedBar(e){
    if(!myMovie.paused && !myMovie.ended){
    var mouseX=e.pageX-bar.offsetLeft;
    var newtime=mouseX*myMovie.duration/barSize; //new starting time
    myMovie.currentTime=newtime;
    progressBar.style.width=mouseX+'px';
    window.clearInterval(updatedBar);
    }
    }
    window.addEventListener('load',doFisrt,false);