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

2023-2-7    前端達人

如今HTML5 移動應(yīng)用或 Web app 中越來越普遍的使用了離線瀏覽技術(shù),所以用 JavaScript 檢測瀏覽器在線/離線狀態(tài)非常常見。

無論瀏覽器是否在線,navigator.onLine 屬性都會提供一個布爾值。 如果瀏覽器在線,則設(shè)置為 true ,否則設(shè)置為 false 。

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

online 和 offline 事件:

當瀏覽器脫機或上線時,瀏覽器還支持 online 和 offline 事件。

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

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

  • 在 window,document,或 document.body 上使用 addEventListener
  • 將 document 或 document.body 的 ononline 或 onoffline 屬性設(shè)置為一個 JavaScript Function 對象。(注意:由于兼容性原因,不能使用 window.ononline 或 window.onoffline。)
  • 在 HTML 標記中的 body 標簽上指定 οnοnline=”…” 或 οnοffline=”…” 特性。

注意事項:

  • IE8中需要給document.body綁定事件而不是window
  • 在線離線的變化指的是物理上的網(wǎng)絡(luò)鏈接變化,如果是在控制臺將網(wǎng)絡(luò)限制為 offline 則不會觸發(fā)相應(yīng)的事件。

實例代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用 JavaScript 檢測瀏覽器在線/離線狀態(tài)(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">檢查狀態(tài)</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>
    

總結(jié):

1、navigator.online屬性提供瀏覽器是否在線的布爾值

2、瀏覽器脫機或上線還支持online和offline事件(IE8需要給document.body綁定事件而不是window)

藍藍設(shè)計建立了UI設(shè)計分享群,每天會分享國內(nèi)外的一些優(yōu)秀設(shè)計,如果有興趣的話,可以進入一起成長學(xué)習,請加藍小助,微信號:ben_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務(wù)合作,也請與我們聯(lián)系01063334945。


分享此文一切功德,皆悉回向給文章原作者及眾讀者.
免責聲明:藍藍設(shè)計尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問題,請及時與我們?nèi)〉寐?lián)系,我們立即更正或刪除。


藍藍設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)、UI設(shè)計公司、界面設(shè)計公司、UI設(shè)計服務(wù)公司、數(shù)據(jù)可視化設(shè)計公司、UI交互設(shè)計公司、高端網(wǎng)站設(shè)計公司、UI咨詢、用戶體驗公司、軟件界面設(shè)計公司

日歷

鏈接

個人資料

藍藍設(shè)計的小編 http://sillybuy.com

存檔