有關(guān)HTML5 Video對象的ontimeupdate事件(Chrome上無效)的問題

字號:


    日期在做一個視頻播放的頁面,其中用到了HTML5的Video對象,這個是HTML5中新增的一個對象,支持多種不同格式的視頻在線播放,功能比較強大,而且還擴展了許多事件,可以通過JavaScript腳本來對視頻播放進(jìn)行控制。參考下面兩個鏈接:
    http://msdn.microsoft.com/en-us/library/windows/apps/hh465962.aspx
    http://www.w3school.com.cn/html5/tag_video.asp
    Video對象可以通過ontimeupdate事件來報告當(dāng)前的播放進(jìn)度,同時通過該事件還可以根據(jù)視頻播放的情況來控制頁面上的其它元素,例如隨著視頻播放的進(jìn)度來切換章節(jié)、顯示額外信息等。下面是一個例子:
    代碼如下:
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <title></title>
    </head>
    <body>
    <script type="text/javascript">
    function timeUpdate() {
    document.getElementById('time').innerHTML = video.currentTime;
    }
    function durationChange() {
    document.getElementById('duration').innerHTML = video.duration;
    }
    function seekVideo() {
    document.getElementById('video').currentTime = document.getElementById('seekText').value;
    }
    window.onload = function () {
    var videoPlayer = document.getElementById("video");
    videoPlayer.ontimeupdate = function () { timeUpdate(); };
    };
    </script>
    <div>
    <video id="video" controls="controls"
    poster="./images/videoground1.png"
    src="./videoSource/video1.mp4" width="450px" height="320px"
    ondurationchange="durationChange()" />
    </div>
    <div>Time: <span id="time">0</span> of <span id="duration">0</span> seconds.</div>
    <div>
    <input type="text" id="seekText" />
    <input type="button" id="seekBtn" value="Seek Video" onclick="seekVideo();" />
    </div>
    </body>
    </html>
    當(dāng)然你也可以像在頁面上使用其它元素一樣,給Video對象動態(tài)添加屬性或者掛事件,如:
    代碼如下:
    video.ontimeupdate = function () { getCurrentVideoPosition(); };
    不過上面這行代碼貌似在Chrome上無效,可以使用addEventListener來代替它:
    代碼如下:
    videoPlayer.addEventListener("timeupdate", function () { getCurrentVideoPosition(); }, false);
    不知道是什么原因在Chrome上不能直接將ontimeupdate事件掛在Video元素上,而必須通過addEventListener方法來添加事件。不過addEventListener也兼容IE和Firefox瀏覽器,所以應(yīng)該是通過的。