(Online or Offline?)
ブラウザのオンライン状態
body ononline="update(true)" onoffline="update(false)" onload="update(navigator.onLine)"
      
function update(online) {
  document.querySelector('#status').textContent =
  online ? 'Online' : 'Offline';
}
      
navigator.connection
ネットワーク接続情報
const connectionInfo = navigator.connection;
if (connectionInfo !== undefined) {
  const init = function() {
    document.getElementById('network').innerHTML =
    'Network Type ' + connectionInfo.effectiveType + ' ' + connectionInfo.type + ' | '
    + 'Downlink ' + connectionInfo.downlink + ' Mb/s | '
    + 'RTT '+ connectionInfo.rtt + ' ms'
  }
  init()

  if ('onchange' in connectionInfo) {
    connectionInfo.addEventListener('change', init)
  } else if ('ontypechange' in connectionInfo) {
    connectionInfo.addEventListener('typechange', init)
  }
}
      
navigator.deviceMemory
端末のおよそのメモリ量/論理プロセッサーのコア数
const memory = navigator.deviceMemory;
const hardware = navigator.hardwareConcurrency;
document.querySelector('#navigator').innerHTML = `This Device has at least ${memory} GiB of RAM | ${hardware} CPU available.`;
      

Battery Status API
システムのバッテリーに関する情報を提供する API

バッテリー状態 API は、システムのバッテリー充電レベルに関する情報の提供、およびバッテリーレベルや充電状態が変化したときに発生するイベントによる通知を可能にします。

これは、バッテリーが消耗したときにバッテリー消費を減らすためアプリのリソース使用状況を調整したり、データを失わないためにバッテリーが切れる前に変更点を保存したりするために使用できます。


navigator.getBattery().then((battery) => {
  function updateAllBatteryInfo() {
    updateChargeInfo();
    updateLevelInfo();
    updateChargingInfo();
    updateDischargingInfo();
  }
  updateAllBatteryInfo();

  battery.addEventListener("chargingchange", () => {
    updateChargeInfo();
  });
  function updateChargeInfo() {
    document.querySelector('#charging').innerText = `${battery.charging ? "充電中" : "放電中"}`;
  }

  battery.addEventListener("levelchange", () => {
    updateLevelInfo();
  });
  function updateLevelInfo() {
    document.querySelector('#level').innerText = `${battery.level * 100} %`;
  }

  battery.addEventListener("chargingtimechange", () => {
    updateChargingInfo();
  });
  function updateChargingInfo() {
    if (battery.chargingTime === Infinity) {
      document.querySelector('#chargingTime').innerText = '-';
    } else {
      document.querySelector('#chargingTime').innerText = `${battery.chargingTime} 秒`;
    }
  }

  battery.addEventListener("dischargingtimechange", () => {
    updateDischargingInfo();
  });
  function updateDischargingInfo() {
    if (battery.dischargingTime === Infinity) {
      document.querySelector('#dischargingTime').innerText = '-';
    } else {
      document.querySelector('#dischargingTime').innerText = `${battery.dischargingTime} 秒`;
    }
  }
});
      
battery.charging 現在充電されているかどうか
battery.level 現在の充電レベル
battery.chargingTime 完全に充電されるまでの残り時間
battery.dischargingTime 完全に放電されるまでの残り時間