JS Navigator.onLine 返回浏览器在线离线状态

5 min read

返回浏览器的在线状态。该属性返回一个布尔值,true 表示在线,false 表示离线。

每当浏览器连接到网络的能力发生变化时,该属性都会发送更新。

当用户点击链接或脚本请求远程页面时,会发生更新。例如,当用户在失去 Internet 连接后不久单击链接时,该属性应返回 false。

浏览器以不同的方式实现此属性。

在 Chrome 和 Safari 中,如果浏览器无法连接到局域网 (LAN) 或路由器,则它处于离线状态;所有其他条件都返回 true。

因此,虽然您可以假设浏览器在返回 false 值时处于脱机状态,但您不能假设 true 值必然意味着浏览器可以访问互联网。

您可能会得到误报,例如在计算机运行虚拟化软件的情况下,该虚拟化软件具有始终“连接”的虚拟以太网适配器(连接)。

因此,如果你真的想确定浏览器的在线状态,你应该开发额外的检查手段。

在 Firefox 和 Internet Explorer 中,将浏览器切换到离线模式会发送一个 false 值。在 Firefox 41 之前,所有其他条件都返回真值;在 Windows 上测试 Nightly 68 的实际行为表明,它只寻找 LAN 连接,如 Chrome 和 Safari,会出现误报。

您可以通过监听在线和离线事件来查看网络状态的变化。

window.addEventListener('offline', function(e) { console.log('offline'); });

window.addEventListener('online', function(e) { console.log('online'); });