JavaScript检测网络状态需结合navigator.onLine监听与fetch探测:前者监听online/offline事件获基础状态,后者通过同源HEAD请求验证真实连通性,并处理超时、页面可见性及误判场景。
JavaScript 中检测网络状态,核心是监听 navigator.onLine 属性变化,并结合实际请求验证,因为该属性仅反映浏览器“是否认为自己在线”,容易误判(比如连着 Wi-Fi 但无外网)。
navigator.onLine 是一个只读布尔值,页面加载时即有初始值,后续会随系统网络切换自动更新。但它不保证能访问服务器——例如本地断网但路由器仍通电,它可能返回 true。
if (navigator.onLine) { /* 可能在线 */ }
window.addEventListener('online', () => console.log('上线了'))
window.addEventListener('offline', () => console.log('掉线了'))
仅靠 navigator.onLine 不可靠,建议搭配一次快速 HTTP 请求(如对自身域名的 /health 或空响应接口)确认服务可达性。
fetch('/health', { method: 'HEAD' })
AbortController 控制 3–5 秒内无响应即判定为离线用户切到其他标签页或休眠设备时,online/offline 事件可能延迟触发。可在页面重获焦点或可见时主动校验:
visibilitychange 事件,在 document.visibilityState === 'visible' 时执行一次探测focus 事件,适用于用户切回窗口场景nav
igator.onLine 更准确真实项目中要注意这些典型问题:
navigator.onLine 始终为 true
# javascript
# java
# 浏览器
# 路由器
# 后端
# 路由
# wi-fi
# win
# 跨域
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
c++如何利用doxygen生成开发文档_c++ 代码注释规范与HTML文档导出【案例】
如何在Golang中指定模块版本_使用go.mod控制版本号
Win11如何卸载OneDrive_Win11卸载OneDrive方法【教程】
Win11如何设置自动关机 Win11定时关机命令使用教程【技巧】
Win11怎么设置任务栏对齐方式_Windows11个性化任务栏行为
Windows 11无法安全删除U盘提示设备正在使用中怎么办_Windows 11找出占用设备进程
用lighttpd能运行php吗_lighttpd配置php步骤【教程】
Python并发安全问题_资源竞争说明【指导】
Mac上的iMovie如何剪辑视频?(新手入门教程)
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何使用Golang table-driven fuzz测试_多数据随机化发现缺陷
Python函数接口稳定性_版本演进解析【指导】
php转mp4怎么保留字幕_php处理带字幕视频转换说明【说明】
Win11麦克风没声音怎么设置_Win11麦克风权限及驱动修复【教程】
XSLT怎么生成动态的HTML属性名和标签名
Win11怎么更改输入法顺序_Win11调整语言首选位置【设置】
如何在Golang中实现微服务负载均衡_Golang负载均衡策略与实现示例
php控制舵机角度怎么调_php发送pwm信号控制舵机转动【解答】
c++中如何计算坐标系中两点间距离_c++勾股定理求距离
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
如何理解Go指针和内存分配关系_Go Pointer内存Model解析
Win10怎么创建桌面快捷方式 Win10为应用创建快捷方式【步骤】
Python脚本参数接收_sys与argparse解析【指导】
如何在网页无标准表格标签时高效提取结构化数据
Mac如何使用听写功能_Mac语音输入打字【效率技巧】
Windows11如何设置专注助手_Windows11专注助手使用攻略【技巧】
用Python构建微服务架构实践_FastAPI与Django对比详解
如何使用Golang捕获并记录协程panic_保证主程序稳定运行
如何在JavaScript中动态拼接PHP的base_url与前端变量
Python配置文件操作教程_JSONINIYAML解析与应用实战
php485函数执行慢怎么优化_php485性能提升小技巧【技巧】
Win11怎么关闭SmartScreen_禁用Windows Defender筛选器教程【步骤】
如何使用Golang编写单元测试_创建Test函数验证业务逻辑
php8.4如何配置ssl证书_php8.4https访问配置指南【教程】
MAC怎么在照片中添加水印_MAC自带编辑工具文字水印叠加【方法】
如何高效删除 NumPy 二维数组中所有元素相同的列
Windows服务持续崩溃怎样修复_系统服务保护机制解析
Python多线程使用规范_线程安全解析【教程】
Win11怎么关闭自动修复_跳过Win11开机自动修复循环【技巧】
Win11系统占用空间大怎么办 Win11深度瘦身清理指南【优化】
Win11怎么关闭通知消息_屏蔽Windows 11右下角弹窗通知设置【详解】
Windows10如何更改开机密码_Win10登录选项更改密码教程
如何在Golang中捕获JSON序列化错误_Golangjson.Marshal错误处理示例
php增删改查报错1054怎么办_字段名错误排查修复【解答】
php485函数怎么捕获异常_php485错误处理机制设置技巧【操作】
Win11怎么设置环境变量_Win11配置Path路径变量【详解】
Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】
MAC如何安装Git版本控制工具_MAC开发环境配置与Xcode插件安装【教程】
Windows10蓝屏代码DPC_WATCHDOG_VIOLATION_Win10死机修复指南
Win11怎么设置虚拟内存_Windows 11优化内存性能提升速度【技巧】
2025-12-26
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。