我正在创建一个基于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
显示互联网在线状态。我重启了系统,清空了浏览器缓存,但还是遇到了同样的问题。我也读过人们面临的同样问题,但没有得到一个好的解决方案。我怎样才能解决这个问题!任何建议!
如本特性的文档中所述:
https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine在Chrome和Safari中,如果浏览器无法连接到局域网(LAN)或路由器,则浏览器处于离线状态;所有其他条件返回true。因此,当它返回一个假值时,您可以假设浏览器处于脱机状态,但不能假设一个真值一定意味着浏览器可以访问internet。您可能会得到误报,例如在计算机运行具有始终"连接"的虚拟以太网适配器的虚拟化软件的情况下。因此,如果你真的想确定浏览器的在线状态,你应该开发额外的方法来检查…
意味着您不能依赖此特性来确定连接。现在,这取决于你的应用程序——你能做什么。一种方法是将心跳数据包发送到服务器上的REST接口。