navigator.online可快速检测浏览器联网状态:true表示浏览器认为在线(含无外网的wi-fi),false表示明确离线;需结合online/offline事件监听切换,并用fetch二次验证以提升可靠性。

JavaScript 中可以通过 navigator 对象的 onLine 属性和相关事件,快速检测浏览器当前是否处于联网状态。它不判断网络质量或能否访问特定服务器,只反映浏览器是否认为自己“在线”(通常基于系统网络接口状态)。
读取当前网络状态
navigator.onLine 是一个只读布尔值:
- 返回 true:浏览器认为已连接网络(即使实际无法访问互联网,比如仅连了断网的 Wi-Fi)
- 返回 false:浏览器明确检测到离线(如禁用网络、飞行模式开启)
示例:
console.log(navigator.onLine); // true 或 false监听网络状态变化
使用 window 的 online 和 offline 事件,实时响应切换:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
online:从离线恢复在线时触发 -
offline:从在线变为离线时触发
示例:
window.addEventListener('online', () => {console.log('已重新联网');
});
window.addEventListener('offline', () => {
console.log('已断开网络');
});
注意局限性与补充建议
navigator.onLine 无法替代真实请求验证,常见问题包括:
- Wi-Fi 已连接但无外网(如酒店登录页未跳转),
onLine仍为 true - 某些旧版 Safari 在页面加载后不会自动更新
onLine值 - 移动端在后台切出时,部分浏览器可能暂停事件监听
如需更可靠判断,可结合一次轻量级 fetch(如请求自身域名下的 /health 或空 GIF)并设置超时,作为二次确认。
简单可用的封装函数
以下是一个兼顾即时性和健壮性的检查逻辑:
function checkNetwork() {if (!navigator.onLine) return Promise.resolve(false);
return fetch('/favicon.ico', { method: 'HEAD', cache: 'no-cache' })
.then(() => true)
.catch(() => false);
}
// 使用
checkNetwork().then(isOnline => {
if (isOnline) { /* 执行联网操作 */ }
else { /* 提示用户检查网络 */ }
});
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










