HTML5为此定义了一个 navigator.onLine 属性,这个属性值为 true 表示设备能上网,值为 false 表示设备离线。这个属性的关键是浏览器必须知道设备能否访问网络,从而返回正确的值。实际应用中, navigator.onLine 在不同浏览器间还有些小的差异。
单独使用 navigator.onLine 属性不能确定网络是否连通。即便如此,在请求发生错误的情况下,检测这个属性仍然是管用的。以下是检测该属性状态的示例。
if (navigator.onLine){
//正常工作
} else {
//执行离线状态时的任务
}
除 navigator.onLine 属性之外,为了更好地确定网络是否可用,HTML5还定义了两个事件: online 和 offline 。当网络从离线变为在线或者从在线变为离线时,分别触发这两个事件。这两个事件在 window 对象上触发。
为了检测应用是否离线,在页面加载后,最好先通过 navigator.onLine 取得初始的状态。然后,就是通过上述两个事件来确定网络连接状态是否变化。当上述事件触发时, navigator.onLine 属性的值也会改变,不过必须要手工轮询这个属性才能检测到网络状态的变化。
点“阅读原文”了解更多