日期在做一個視頻播放的頁面,其中用到了HTML5的Video對象,這個是HTML5中新增的一個對象,支持多種不同格式的視頻在線播放,功能比較強(qiáng)大,而且還擴(kuò)展了許多事件,可以通過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事件來報(bào)告當(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)該是通過的。