导航器显示Internet连接状态.联机不正常工作,并显示错误的状态,而互联网没有连接



我正在创建一个基于web的应用程序,它可以离线工作,也可以在线。因此,我需要检查互联网是否正常工作。目前我正在使用

navigator.onLine

在JavaScript。我尝试了像;

if (navigator.onLine) {
    // Internet is connected
    // work in online Mode
}
else{
    // Internet is disconnected
    // work in offline mode
}

工作正常,但有时会给出错误的状态。当我改变我的ip和/或网关并将它们设置为错误以断开我的互联网接入时,我注意到了这一点。改变我的ip后,没有任何网页被访问,但navigator.onLine显示互联网在线状态。我重启了系统,清空了浏览器缓存,但还是遇到了同样的问题。我也读过人们面临的同样问题,但没有得到一个好的解决方案。我怎样才能解决这个问题!任何建议!

如本特性的文档中所述:

在Chrome和Safari中,如果浏览器无法连接到局域网(LAN)或路由器,则浏览器处于离线状态;所有其他条件返回true。因此,当它返回一个假值时,您可以假设浏览器处于脱机状态,但不能假设一个真值一定意味着浏览器可以访问internet。您可能会得到误报,例如在计算机运行具有始终"连接"的虚拟以太网适配器的虚拟化软件的情况下。因此,如果你真的想确定浏览器的在线状态,你应该开发额外的方法来检查…

https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine

意味着您不能依赖此特性来确定连接。现在,这取决于你的应用程序——你能做什么。一种方法是将心跳数据包发送到服务器上的REST接口。

最新更新