利用Video屬性及Method來變更播放器的功能,
播放/暫停、快進/快退、音量控制、倍數控制。
目標
- 實現播放器功能
- 播放/暫停
- 快進/快退
- 音量控制
- 倍數控制
實踐步驟
取得所有video DOM元素
撰寫Function 並 監聽DOM元素
- 監聽 video 播放或暫停 →延伸→ 切換播放的icon
- 進度條更新目前播放時間
- 進度條監聽是否有切換video播放時間
- 調整 聲音、播放倍數
- 進、快退(+25 or -10)
成品
JS學習紀錄
video 播放或暫停
1 | function togglePlay(e){ |
上例比較特別的地方是在 togglePlay()
裡的 video[method]()
這個寫法,
原本會寫成 video.play()
和 video.pause()
來呼叫影片method,
所以也可使用 video[method]()
呼叫method。
進度條更新目前播放時間
因為影片會一直持續播放,所以我們也要持續更新進度條UI畫面。
1 | function handleProgress(e){ |
作者有提到關於 video 有兩個監聽參數 timeupdate
、progress
,
都可以做為影片時間變動時的觸發條件,
二者差異如下:
- progress:會在載入時,就開始觸發
- timeupdate:會在啟動播放後,才開始觸發
所以建議使用 progress
提早觸發。
進度條監聽是否有切換video播放時間
判斷User是否有在 進度條 做 變更video時間 的動作,
當符合操作條件(滑鼠按住不放且拖移進度條)時,就變更目前影片的播放時間。
1 | const progress = document.querySelector('.progress'); // 進度條DOM元素 |
補充說明
上列程式碼其中一段,關於監聽 mousemove
的寫法,原始寫法如下
1 | progress.addEventListener('mousemove', (e) => { |
變更 聲音、播放倍數
利用 JS
取得DOM元素的name、value的值,進而更新video的屬性。
1 | <!-- 聲音 --> |
1 | function handleRangeUpdate() { |
快進、快退(+25 or -10)
利用 JS
取得DOM元素dataset的值,進而更新video的屬性。
1 | <!-- 快退 --> |
1 | function skip() { |