HTML5 การใช้งาน onoffline Event Attribute

onoffline และ ononline เป็น Event Attributes ที่ HTML5 มีไว้เพื่อช่วยตรวจจับสถานะการเชื่อมต่ออินเทอร์เน็ตของผู้ใช้ โดยสามารถใช้เพื่อเพิ่มประสิทธิภาพการทำงานของเว็บแอปพลิเคชันที่ต้องการตรวจสอบสถานะการเชื่อมต่อได้ง่าย ๆ ไม่ว่าจะเป็นการเชื่อมต่ออยู่หรือไม่เชื่อมต่อ ซึ่งสามารถใช้งานได้ทั้งในส่วนของ <body> หรือในโค้ด JavaScript

การใช้งาน onoffline และ ononline

  • ononline: จะทำงานเมื่อเบราว์เซอร์เชื่อมต่อกับอินเทอร์เน็ตได้
  • onoffline: จะทำงานเมื่อเบราว์เซอร์สูญเสียการเชื่อมต่ออินเทอร์เน็ต

การใช้งานใน <body>

ในตัวอย่างนี้ จะทำการตรวจสอบสถานะการเชื่อมต่อโดยตรงจากแท็ก <body> เมื่อมีการเปลี่ยนแปลงสถานะ จะเรียกฟังก์ชัน goOnline() หรือ goOffline() ขึ้นมาตามสถานะที่เกิดขึ้น

HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Online/Offline Example</title>
    <script>
        function goOnline() {
            alert("คุณออนไลน์แล้ว!");
        }

        function goOffline() {
            alert("คุณออฟไลน์แล้ว!");
        }
    </script>
</head>
<body ononline="goOnline()" onoffline="goOffline()">
    <h1>ทดสอบการเชื่อมต่อออนไลน์และออฟไลน์</h1>
    <p>เปลี่ยนสถานะการเชื่อมต่อเพื่อดูผลลัพธ์</p>
</body>
</html>

การใช้งานผ่าน JavaScript

เราสามารถใช้การฟังเหตุการณ์ (Event Listener) ผ่าน JavaScript เพื่อทำงานกับ onoffline และ ononline ได้โดยตรงในไฟล์สคริปต์

HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Online/Offline Example</title>
    <script>
        window.addEventListener('online', function() {
            document.getElementById("status").textContent = "คุณออนไลน์แล้ว!";
            document.body.style.backgroundColor = "lightgreen";
        });

        window.addEventListener('offline', function() {
            document.getElementById("status").textContent = "คุณออฟไลน์แล้ว!";
            document.body.style.backgroundColor = "lightcoral";
        });
    </script>
</head>
<body>
    <h1>ทดสอบการเชื่อมต่อออนไลน์และออฟไลน์</h1>
    <p id="status">กำลังตรวจสอบการเชื่อมต่อ...</p>
</body>
</html>

การแสดงเนื้อหาเฉพาะในโหมดออฟไลน์

สามารถใช้เพื่อจัดการกับการแสดงผลข้อมูลที่เก็บไว้ (cached data) หรือข้อมูลสำรองในกรณีที่ผู้ใช้สูญเสียการเชื่อมต่ออินเทอร์เน็ต

HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Offline Content Example</title>
    <script>
        function updateOnlineStatus() {
            const status = navigator.onLine ? "ออนไลน์" : "ออฟไลน์";
            document.getElementById("status").textContent = `สถานะปัจจุบัน: ${status}`;
            if (!navigator.onLine) {
                document.getElementById("offline-content").style.display = "block";
            } else {
                document.getElementById("offline-content").style.display = "none";
            }
        }

        window.addEventListener('online', updateOnlineStatus);
        window.addEventListener('offline', updateOnlineStatus);
    </script>
</head>
<body onload="updateOnlineStatus()">
    <h1>ทดสอบการเชื่อมต่อออนไลน์และออฟไลน์</h1>
    <p id="status"></p>
    
    <div id="offline-content" style="display:none; color:red;">
        <p>ขณะนี้คุณกำลังออฟไลน์ โปรดเชื่อมต่ออินเทอร์เน็ตเพื่อดูข้อมูลทั้งหมด</p>
    </div>
</body>
</html>

การประยุกต์ใช้งานในสถานการณ์จริง

  1. การแจ้งเตือนผู้ใช้: เมื่อต้องทำงานกับเว็บแอปพลิเคชันที่พึ่งพาข้อมูลจากเซิร์ฟเวอร์ สามารถใช้ onoffline และ ononline เพื่อตรวจสอบสถานะการเชื่อมต่อและแจ้งเตือนผู้ใช้เมื่อเกิดการขาดการเชื่อมต่อ
  2. การบันทึกข้อมูลสำรอง: ในกรณีที่แอปพลิเคชันต้องการให้ผู้ใช้สามารถทำงานในโหมดออฟไลน์ได้ สามารถใช้ฟังก์ชันเหล่านี้ร่วมกับ localStorage หรือ IndexedDB เพื่อจัดเก็บข้อมูลชั่วคราวและซิงค์ข้อมูลกลับไปยังเซิร์ฟเวอร์เมื่อกลับมาออนไลน์
  3. การอัปเดตเนื้อหาแบบเรียลไทม์: การใช้ ononline เพื่อรีเฟรชหรืออัปเดตข้อมูลเมื่อผู้ใช้กลับมาออนไลน์ได้ ทำให้มั่นใจว่าผู้ใช้จะได้รับข้อมูลล่าสุด

onoffline และ ononline จึงเป็น Event Attributes ที่มีประโยชน์ในการทำให้เว็บไซต์สามารถปรับตัวให้เข้ากับสภาพแวดล้อมการเชื่อมต่ออินเทอร์เน็ตของผู้ใช้

แชร์เรื่องนี้