Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

เหตุการณ์ onwaiting: รันสคริปตเมื่อสื่อหยุดรอ Buffering

เหตุการณ์ 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>