Windows系统下navigator.onLine API断网仍返回true的问题原因咨询
首先明确核心前提:navigator.onLine的返回值不代表设备可正常访问公网,仅代表浏览器读取到的系统层面的「是否连接到任意网络」的状态。
出现跨系统表现差异的具体原因如下:
- Windows系统的网络状态判定规则:只要存在任意活跃的网络适配器(包括虚拟机虚拟网卡、WSL虚拟网卡、VPN虚拟网卡、启用状态但未接网线的以太网适配器、本地环回网卡等),系统就会标记为「已联网」。Chrome、Edge、Firefox在Windows端均直接调用系统提供的
INetworkListManager接口读取网络状态,不会额外做公网连通性校验,因此只要系统返回已联网,接口就返回true。 - Mac系统的网络状态判定优先级不同:会优先检测是否存在可连通公网的活跃物理连接,即便存在虚拟网卡,只要没有可用的公网连接就会标记为离线,因此你在Mac端测试时表现符合预期。
你可以自行验证该逻辑:断开所有物理网络后,进入Windows「设置-网络和Internet-高级网络设置」,禁用所有其他活跃的网络适配器,再在浏览器控制台执行console.log(navigator.onLine),即可得到false的返回结果。
内容的提问来源于stack exchange,提问作者hanulo
相关产品推荐
相关产品推荐

