我看过一千个帖子,有人问如何在 javascript 中检测互联网连接,总是有人说要使用 navigator.onLine,而另一个人说它不可靠,只告诉你连接是否可用,而不是如果你已经连接了。
底线,navigator.onLine 是否会告诉我,即使 3G/4G 和 WiFi 已打开且未处于飞行模式或其他任何情况下,用户是否由于覆盖范围不佳而无法联系那里的服务器?只是你的平均死区。
我看过一千个帖子,有人问如何在 javascript 中检测互联网连接,总是有人说要使用 navigator.onLine,而另一个人说它不可靠,只告诉你连接是否可用,而不是如果你已经连接了。
底线,navigator.onLine 是否会告诉我,即使 3G/4G 和 WiFi 已打开且未处于飞行模式或其他任何情况下,用户是否由于覆盖范围不佳而无法联系那里的服务器?只是你的平均死区。
浏览器以不同的方式实现此属性。
在 Chrome 和 Safari 中,如果浏览器无法连接到局域网 (LAN) 或路由器,则它处于离线状态;所有其他条件都返回 true。因此,虽然您可以假设浏览器在返回 false 值时处于脱机状态,但您不能假设 true 值必然意味着浏览器可以访问互联网。您可能会得到误报,例如在计算机运行具有始终“连接”的虚拟以太网适配器的虚拟化软件的情况下。因此,如果你真的想确定浏览器的在线状态,你应该开发额外的检查手段。要了解更多信息,请参阅 HTML5 Rocks 文章,脱离网格工作。
在 Firefox 和 Internet Explorer 中,将浏览器切换到离线模式会发送一个 false 值。所有其他条件返回真值
根据 MDN,它因浏览器的实现而异。
https://developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine
我会假设使用 WebKit 浏览器,它不是知道浏览器可以访问 Internet 的可靠方法,只是某种形式的网络访问。