เหตุการณ์ onwaiting จะถูกกระตุ้นเมื่อการเล่นสื่อ (วิดีโอ/เสียง) หยุดชั่วคราวเพราะกำลังโหลดข้อมูล (Buffering) และคาดว่าจะเล่นต่อเมื่อโหลดเสร็จ แตกต่างจาก onpause ที่เป็นการหยุดโดยเจตนา
ตัวอย่างการใช้งาน
<!DOCTYPE html>
<html>
<body>
<h2 id="test">เล่น</h2>
<video id="myid" width="320" height="176" controls onwaiting="myFunction()">
<source src="/html5/foo.ogg" type="video/ogg" />
<source src="/html5/foo.mp4" type="video/mp4" />
เบราว์เซอร์ของคุณไม่รองรับองค์ประกอบ video
</video>
<script>
function myFunction() {
document.getElementById("test").innerHTML = "กำลังโหลดข้อมูล... (Buffering)";
// แสดง Spinner หรือ Progress
}
</script>
</body>
</html>
เหตุการณ์ Loading ที่เกี่ยวข้อง
| เหตุการณ์ | ความหมาย |
|---|---|
| onloadstart | เริ่มโหลดข้อมูล |
| onprogress | กำลังโหลด (Progress) |
| onstalled | โหลดค้าง (ไม่ได้รับข้อมูล) |
| onwaiting | หยุดเล่นเพราะรอ Buffer (ข้อมูลไม่พอต่อ) |
| oncanplay | โหลดพอเล่นได้ |
| onplaying | เล่นจริง (หลัง Waiting) |
การประยุกต์ใช้
- แสดง Loading Spinner/Skeleton ขณะ Buffering
- Analytics: วัดคุณภาพ Streaming (Buffering Frequency/Duration)
- Adaptive Bitrate: ลดคุณภาพอัตโนมัติหาก Buffering บ่อย
- Preload Next Segment (HLS/DASH)
ตัวอย่างแสดง Spinner
<div class="video-wrapper" style="position: relative;">
<video id="vid" src="video.mp4" controls onwaiting="showLoader()" onplaying="hideLoader()"></video>
<div id="loader" class="spinner" style="display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">⏳</div>
</div>
<script>
function showLoader() { document.getElementById('loader').style.display = 'block'; }
function hideLoader() { document.getElementById('loader').style.display = 'none'; }
</script>