彻底解释一下,navigator.onLine是什么?

13

我看过很多帖子,都是关于如何在JavaScript中检测网络连接性的问题,总有一个人说要使用navigator.onLine,另一个人则说它不可靠,只能告诉你是否有可用连接,而不能告诉你是否已连接。

底线是,如果3G/4G和WiFi都已开启,用户没有进入飞行模式或其他任何模式,但由于信号差而无法联系到服务器,那么navigator.onLine会告诉我吗?这只是普通的死区问题。


1
https://developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine - Mahn
1
http://labs.ft.com/2012/08/navigator-online-here-be-dragons/ - CodeReaper
2个回答

12

根据MDN关于navigator.onLine的文章

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

在Chrome和Safari中,如果浏览器无法连接到本地局域网(LAN)或路由器,则离线;所有其他情况都返回true。因此,当它返回false值时,您可以假设浏览器处于离线状态,但不能假设true值一定意味着浏览器可以访问互联网。您可能会得到误报,例如在计算机运行具有始终处于“连接”状态的虚拟以太网适配器的虚拟化软件的情况下。因此,如果您真的想确定浏览器的在线状态,您应该开发其他检查手段。要了解更多信息,请参见HTML5 Rocks文章 Working Off the Grid

在Firefox和Internet Explorer中,将浏览器切换到离线模式会发送false值。所有其他条件都返回true值。


真遗憾。如果它能可靠地工作,这将是一个非常棒的工具。感谢提供简明的摘录。 - jmease

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接