我有一个关于navigator.onLine属性的问题。
我从一个运行在WAMP上的本地信息亭运行一个简单的网站。
在我的笔记本电脑上,当我测试它的时候,它是工作的。我关闭了WiFi,然后就会出现警告框。在运行WAMP软件的kiosk上断开互联网连接不会产生错误状态。你知道为什么吗?
var online = navigator.onLine;
if (online == false) {
alert("Sorry, we currently do not have Internet access.");
location.reload();
}
发布于 2013-01-12 01:11:01
MDN关于navigator.onLine
在Chrome和Safari中,如果浏览器无法连接到局域网或路由器,则它处于脱机状态;所有其他条件都返回true。因此,虽然您可以假设浏览器在返回false值时处于脱机状态,但您不能假设true值必然意味着浏览器可以访问internet。
如上所述,此属性是不可信任的,因此,在我看来,最好的解决方法是对服务器端页面进行ajax调用。如果浏览器离线,则连接将失败,因此将调用onerror
事件。否则,将调用onload
事件:
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!");
}
);
发布于 2019-05-04 17:37:11
如果您使用的是axios
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
}
});
https://stackoverflow.com/questions/14283124
复制相似问题