用 JavaScript 檢測瀏覽器線上/離線狀態(JavaScript API?—?navigator.onLine)

來源:互聯網
上載者:User

標籤:app   eve   div   html5   head   rip   off   upper   btn   

  如今HTML5 行動裝置 App或 Web app 中越來越普遍的使用了離線瀏覽技術,所以用 JavaScript 檢測瀏覽器線上/離線狀態非常常見。

  無論瀏覽器是否線上,navigator.onLine 屬性都會提供一個布爾值。 如果瀏覽器線上,則設定為 true ,否則設定為 false

    if(navigator.onLine) { // true|false        // ...    }

online 和 offline 事件:

  當瀏覽器離線或上線時,瀏覽器還支援 onlineoffline 事件

window.addEventListener(‘online‘, function(e){console.log(‘online‘)});window.addEventListener(‘offline‘, function(e){console.log(‘offline‘);});

  你可以使用幾種熟悉的方式來註冊事件:

  • windowdocument,或 document.body 上使用 addEventListener
  • documentdocument.bodyononlineonoffline 屬性設定為一個 JavaScript Function 對象。(注意:由於相容性原因,不能使用 window.ononlinewindow.onoffline。)
  • 在 HTML 標籤中的 body 標籤上指定 ononline=”…” 或 onoffline=”…” 特性。

  注意事項:

  • IE8中需要給document.body綁定事件而不是window
  • 線上離線的變化指的是物理上的網路連結變化,如果是在控制台將網路限制為 offline 則不會觸發相應的事件。

執行個體代碼:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>用 JavaScript 檢測瀏覽器線上/離線狀態(JavaScript API?—?navigator.onLine)</title>    <style type="text/css">        #status {            position: fixed;            width: 100%;            font: bold 1em sans-serif;            color: #FFF;            padding: 0.5em;        }        #log {            padding: 2.5em 0.5em 0.5em;            font: 1em sans-serif;        }        .online {            background: green;        }        .offline {            background: red;        }    </style></head><body><div id="status"></div><div id="log"></div><button type="button" id="test">檢查狀態</button><script>window.addEventListener(‘load‘, function () {    var testBtn = document.getElementById("test");    var status = document.getElementById("status");    var log = document.getElementById("log");    function updateOnlineStatus(event) {        var condition = navigator.onLine ? "online" : "offline";        status.className = condition;        status.innerHTML = condition.toUpperCase();        log.insertAdjacentHTML("beforeend", "Event: " + (event?event.type:"-") + "; Status: " + condition+ " | ");    }    window.addEventListener(‘online‘, updateOnlineStatus);    window.addEventListener(‘offline‘, updateOnlineStatus);    testBtn.addEventListener("click", updateOnlineStatus);    updateOnlineStatus();});</script></body></html>

 

用 JavaScript 檢測瀏覽器線上/離線狀態(JavaScript API?—?navigator.onLine)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.