首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >navigator.onLine并不总是有效

navigator.onLine并不总是有效
EN

Stack Overflow用户
提问于 2013-01-12 01:07:04
回答 2查看 40.5K关注 0票数 32

我有一个关于navigator.onLine属性的问题。

我从一个运行在WAMP上的本地信息亭运行一个简单的网站。

在我的笔记本电脑上,当我测试它的时候,它是工作的。我关闭了WiFi,然后就会出现警告框。在运行WAMP软件的kiosk上断开互联网连接不会产生错误状态。你知道为什么吗?

代码语言:javascript
复制
var online = navigator.onLine;

if (online == false) {

    alert("Sorry, we currently do not have Internet access.");
    location.reload();

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-12 01:11:01

MDN关于navigator.onLine

在Chrome和Safari中,如果浏览器无法连接到局域网或路由器,则它处于脱机状态;所有其他条件都返回true。因此,虽然您可以假设浏览器在返回false值时处于脱机状态,但您不能假设true值必然意味着浏览器可以访问internet。

如上所述,此属性是不可信任的,因此,在我看来,最好的解决方法是对服务器端页面进行ajax调用。如果浏览器离线,则连接将失败,因此将调用onerror事件。否则,将调用onload事件:

代码语言:javascript
复制
function isOnline(no,yes){
    var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHttp');
    xhr.onload = function(){
        if(yes instanceof Function){
            yes();
        }
    }
    xhr.onerror = function(){
        if(no instanceof Function){
            no();
        }
    }
    xhr.open("GET","anypage.php",true);
    xhr.send();
}

isOnline(
    function(){
        alert("Sorry, we currently do not have Internet access.");
    },
    function(){
        alert("Succesfully connected!");
    }
);
票数 57
EN

Stack Overflow用户

发布于 2019-05-04 17:37:11

如果您使用的是axios

代码语言:javascript
复制
axios.request(options).catch(function(error) {
  if (!error.response) {
    // network error (server is down or no internet)
  } else {
    // http status code
    const code = error.response.status
    // data from server while error
    const response = error.response.data
  }
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14283124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档