Skip to content

็ฝ‘็ปœ็Šถๆ€ โ€‹

่Žทๅ–็ฝ‘่ทฏ็Šถๆ€ โ€‹

  1. navigator.onLine ๅฑžๆ€ง
js
if (navigator.onLine) {
  console.log("ๅœจ็บฟ");
} else {
  console.log("็ฆป็บฟ");
}
  1. ็›‘ๅฌ online ๅ’Œ offline ไบ‹ไปถ
js
window.addEventListener("online", () => {
  console.log("็ฝ‘็ปœ่ฟžๆŽฅๅทฒๆขๅค");
});

window.addEventListener("offline", () => {
  console.log("็ฝ‘็ปœ่ฟžๆŽฅๅทฒๆ–ญๅผ€");
});

ๅŒบๅˆ†ๅผบ็ฝ‘ๅ’Œๅผฑ็ฝ‘็Žฏๅขƒ โ€‹

navigator.connection ๅฏน่ฑก ่ฟ”ๅ›ž ไธ€ไธชNetworkInformation ๅฏน่ฑก

NetworkInformation โ€‹

ๅฑžๆ€ง

  • downlink // ไธ‹่ฝฝๅธฆๅฎฝไผฐ็ฎ—ๅ€ผ๏ผŒๅ•ไฝๆ˜ฏ Mbps
  • effectiveType // ๆœ‰ๆ•ˆ่ฟžๆŽฅ็ฑปๅž‹๏ผŒๆฏ”ๅฆ‚'slow-2g', '2g', '3g', '4g'็ญ‰ใ€‚
  • rtt // Round-Trip Time ๅพ€่ฟ”ๅปถ่ฟŸๆ—ถ้—ด๏ผŒๅ•ไฝๆ˜ฏๆฏซ็ง’
  • saveData // ๅฆๅฏ็”จๆ•ฐๆฎ่Š‚็œๆจกๅผ

ๆ–นๆณ•

  • change
js
if ("connection" in navigator) {
  const connection = navigator.connection;

  // ่Žทๅ–่ฟžๆŽฅไฟกๆฏ
  console.log("่ฟžๆŽฅ็ฑปๅž‹:", connection.effectiveType);
  console.log("ไธ‹่ฝฝ้€Ÿๅบฆ:", connection.downlink, "Mbps");
  console.log("ๅปถ่ฟŸ:", connection.rtt, "ms");
  console.log("็œ็”ตๆจกๅผ:", connection.saveData);

  // ๆ นๆฎไธ‹่ฝฝ้€Ÿๅบฆๅˆคๆ–ญ็ฝ‘็ปœ็Žฏๅขƒ
  if (connection.downlink > 5) {
    console.log("ๅผบ็ฝ‘็Žฏๅขƒ");
  } else {
    console.log("ๅผฑ็ฝ‘็Žฏๅขƒ");
  }

  // ็›‘ๅฌ็ฝ‘็ปœ็Šถๆ€ๅ˜ๅŒ–
  connection.addEventListener("change", () => {
    console.log("็ฝ‘็ปœ่ฟžๆŽฅไฟกๆฏๅ‘็”Ÿๅ˜ๅŒ–");
    console.log("ๆœ‰ๆ•ˆ็ฑปๅž‹:", connection.effectiveType);
    console.log("ไธ‹่ฝฝ้€Ÿๅบฆ:", connection.downlink, "Mbps");
    console.log("ๅปถ่ฟŸ:", connection.rtt, "ms");
    console.log("็œ็”ตๆจกๅผ:", connection.saveData);
  });
} else {
  console.log("ๆต่งˆๅ™จไธๆ”ฏๆŒ็ฝ‘็ปœไฟกๆฏAPI");
}

Released under the MIT License.