javascript 中可通过 navigator.online 属性及 online/offline 事件监听网络状态,但其仅反映浏览器感知的连接状态而非真实可达性;需初始化时主动检查并结合轻量 http 探测提升准确性,且不可替代服务端容错机制。

JavaScript 中可以通过 navigator.onLine 属性配合 online 和 offline 事件来监听网络断开与恢复的在线状态,但要注意它只反映浏览器的“网络连接感知”,并非真实网络可达性。
监听 online / offline 事件
浏览器在系统级网络状态变化时会触发这两个事件,适用于快速响应用户离线/重连场景:
- 使用
window.addEventListener('online', handler)监听恢复在线 - 使用
window.addEventListener('offline', handler)监听断开连接 - 事件触发时机依赖操作系统或浏览器(如 Chrome、Firefox)上报的网络接口状态,不是通过 ping 或 HTTP 请求验证
检查初始在线状态
页面加载时需主动读取 navigator.onLine,因为事件不会在初始化时触发:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
console.log(navigator.onLine); // true 或 false- 建议在
DOMContentLoaded后立即检查,并结合后续事件更新 UI 状态 - 注意:某些环境(如 Chrome 的离线调试模式)会强制设为
false,即使物理网络正常
补充真实网络连通性检测
navigator.onLine 易误报(例如 Wi-Fi 连接但无外网),可搭配轻量 HTTP 探测提升可靠性:
- 在
online事件触发后,发起一个 HEAD 请求到自身域名或 CDN 地址(如/healthz或https://cdn.example.com/blank.gif) - 设置超时(如 3s),失败则认为“逻辑离线”,降级使用缓存或提示用户
- 避免频繁探测,仅在状态切换后执行一次即可
注意事项与兼容性
该机制在现代浏览器中支持良好(Chrome 4+、Firefox 3+、Safari 5+、Edge),但存在局限:
- 移动端 WebView 行为可能不一致(尤其 Android 旧版 Webview)
- 部分企业内网或代理环境下,
navigator.onLine始终返回true - 不要用它替代服务端心跳或 API 错误兜底,仅作为前端体验优化手段
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










