navigator.onLine 离线检测

转载 2013年12月05日 10:56:49

开发离线应用的第一步是要知道设备是在线还是离线,HTML5为此定义了一个navigator.onLine属性,这个属性值为true表示设备能上网,值为false表示设备离线。这个属性的关键是浏览器必须知道设备能否访问网络,从而返回正确的只。实际应用中,navagator.online在不同的浏览器间还有写小的差异。

IE6+和Safari 5+能够正确检测到网络已断开,并将navigator.onLine的值转换为false。

Firefox 3+和Opear 10.6+支持navigator.onLine属性,但你必须手工选中菜单项“文件-Web开发人员(设置)-脱机工作”才能让浏览器正常的工作。

Chrome 11及之前版本始终将navigator.onLine属性设置为true。这是一个待修复的bug。

由于存在上述兼容性的问题,单独使用navigator.onLine属性不能确定网络是否连通。即便如此,在请求发生错误的情况下,检测这个属性仍然是瓜农的。以下是检测该属性状态的示例。

if (navigator.onLine) {
    //正常工作
} else {
    //执行离线状态时的任务
}
         除navigator.onLine属性之外,为了更好地确定网络是否可用,HTML5还定义了两个事件:online和offline。当网络从离线变为在线或者从在线变为离线时,分别触发这两个事件。这两个事件在window对象上触发。

var EventUtil = {
    addHandler: function (element, type, handler) {
        if (element.addEventListener) {
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent) {
            element.attachEvent("on" + type, handler);
        } else {
            element["on" + type] = handler;
        }
    }
};

EventUtil.addHandler(window, "online", function () {
    alert("Online");
});
EventUtil.addHandler(window, "offline", function () {
    alert("Offline");
});

为了检测应用是否离线,在页面加载后,最好先通过navigator.onLine取得初始的状态。然后,就是通过上述两个事件来确定网络连接状态是否变化。当上述事件触发式,navigator.onLine属性的值也会改变,不过必须要手工轮询这个属性才能检测到网络状态的变化。

支持离线检测的浏览器有IE6+(只支持navigator.onLine属性)、Firefox3、Safari4、Opera 10.6、Chrome、iOS 3.2版Safari和Android版WebKit。


原文网址:http://www.w3cmm.com/html/offline.html

相关文章推荐

HDU 5441 Travel(离线 + 带权并查集)——2015 ACM/ICPC Asia Regional Changchun Online

HDU 5441 Travel(离线 + 带权并查集)——2015 ACM/ICPC Asia Regional Changchun Online

离线版-端点检测代码重写

根据对双门限的理解和修改,重写了一个离线版端点检测。      function [st,en]=VAD(x, fs) x=double(x); x=x/max(abs(x)); ...

JavaFX离线部署和运行,客户端浏览器可以自动检测并下载安装指定服务器的JRE

 此文主要说明如何在离线的情况下使用JavaFX程序,以及在没有安装JRE的客户端,如何自动下载并安装指定服务器上的JRE。(此文是在NetBeans开发工具下进行的,并且由IDE自动生成部署时所需文...

Openfire 用户离线、断线 及心跳检测

客户端登出分为正常离线和断线,正常离线会发送presence 消息通知服务器,断线则无通知发送。 1. 正常离线: 客户端在离线之前发送 由PresenceRouter 路由到Prese...
  • yjl49
  • yjl49
  • 2011年09月29日 18:24
  • 10834

用zookeeper实现简单的检测离线或者上线的功能

心跳检测 机器间的心跳检测机制是指在分布式环境中,不同机器(或进程)之间需要检测到彼此是否在正常运行,例如A机器需要知道B机器是否正常运行。在传统的开发中,我们通常是通过主机直接是否...

BOM之navigator对象和用户代理检测

前面的话   navigator对象现在已经成为识别客户端浏览器的事实标准,navigator对象是所有支持javascript的浏览器所共有的。本文将详细介绍navigator对象和用户代理检测 ...

认识Javascript中的navigator对象以及检测浏览器类型和版本,获取浏览器版本号,检测客户端操作系统

Navigator对象包含了Web浏览器的基本信息(如名称,版本,操作系统等) 通过window.navigator方式可以引用该对象,并利用它的属性读取客户端基本信息 Navigator的5个主...

在线时长插件_online_8.3.rar

  • 2011年04月19日 09:43
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:navigator.onLine 离线检测
举报原因:
原因补充:

(最多只允许输入30个字)