navigator.online 是只读布尔属性,返回 true 表示浏览器认为已联网,false 表示离线,但仅反映系统接口状态,存在误报;应结合 online/offline 事件监听与轻量 http 探测提升判断可靠性。

可以通过 navigator.onLine 属性快速判断浏览器当前是否处于联网状态。
检查基本在线状态
navigator.onLine 是一个只读布尔值,返回 true 表示浏览器认为自己已连接网络,false 表示离线。注意:它仅反映浏览器自身的连接感知,并不保证能访问特定服务器或互联网服务。
- 页面加载后立即读取:
console.log(navigator.onLine); - 该值可能受操作系统网络接口状态影响(如禁用 Wi-Fi 或拔掉网线)
- 某些浏览器在无法检测时会默认返回
true,存在误报可能
监听网络状态变化
使用 window 对象的 online 和 offline 事件,可在连接状态切换时触发响应:
- 监听上线:
window.addEventListener('online', () => console.log('已联网')); - 监听离线:
window.addEventListener('offline', () => console.log('已离线')); - 这两个事件不会冒泡,但可被
preventDefault()(不过通常无需阻止)
增强判断:发起轻量级网络探测
为弥补 navigator.onLine 的局限性,可结合一次快速 HTTP 请求验证真实连通性:
- 推荐请求自身域名下的一个小型资源(如
/health.txt或/favicon.ico),避免跨域问题 - 设置较短超时(如 3–5 秒),使用
fetch()并捕获TypeError或状态码异常 - 注意:不要频繁轮询,建议仅在网络状态变更后触发一次验证
实际使用建议
将 navigator.onLine 作为第一层快速判断,再配合事件监听与按需探测,构建更可靠的离线体验:
- 页面初始化时检查状态,决定是否启用缓存数据或显示提示
- 用户提交表单前,先确认在线;若离线,可暂存至
localStorage并稍后同步 - 避免仅依赖
onLine做关键业务判断(如支付、登录),应辅以接口可达性验证
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











