【发布时间】:2014-02-18 12:18:34
【问题描述】:
有没有一种方法可以使用纯 JavaScript 检查互联网连接,而无需从网络请求某些内容?我试过用
alert(navigator.onLine);
但它总是返回true。
谢谢!
【问题讨论】:
-
在线首选项仅检查浏览器是否处于离线模式。我认为您必须执行网络请求才能确定计算机是否在线
标签: javascript browser connectivity
有没有一种方法可以使用纯 JavaScript 检查互联网连接,而无需从网络请求某些内容?我试过用
alert(navigator.onLine);
但它总是返回true。
谢谢!
【问题讨论】:
标签: javascript browser connectivity
根据您要实现的目标,这可能是一个失败的原因。拥有 1 秒的 Internet 连接并不意味着您将拥有它(想想移动、不稳定的网络、丢包、隧道、拥挤的会议/机场 wifi 等)
您最好对您想要的资源发出异步请求...如果它有效...晕了!...如果它失败或超时,然后处理这种情况。
【讨论】:
请尝试下面的代码并更新它是否有效
function hostReachable() {
var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );
var status;
xhr.open( "HEAD", "//" + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false );
try {
xhr.send();
return ( xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 );
} catch (error) {
return false;
}
}
【讨论】:
请看以下链接: https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine
Chrome Linux - 始终返回 true 对你有帮助吗?
【讨论】:
navigator.onLine 检查您是在线还是离线,如果您在线则返回 true,这类似于说您有一个活动的互联网连接。如果您不在线,则返回 false,这类似于说您没有有效的互联网连接
如果您的应用需要检测连接,您可以执行以下操作:
if(navigator.onLine) {
//do something
}
【讨论】: