diff --git a/README.md b/README.md index 99d753e..8ae9cbd 100644 --- a/README.md +++ b/README.md @@ -4,28 +4,34 @@ 总之在`IE`和`Firefox`中一般情况下不能触发这俩事件,只有在选择脱机状态下才能触发此事件。 -### 设置轮询时间和地址 -在online.js中设置以下 - -> `time` 设置轮询时间 -> `url` 当 `url`为空的时候 默认所有浏览器使用 onLine 和 offline事件 -> - url 不为空的时候 IE 和 Firefox 使用 AJAX 轮询判断网络是否连接 -> - url 请求的可以是服务器一个空php 等文件 -> - 文件可以设置头文件,避免轮询跑更多的流量 +### 引用 `online.js` +```html + +``` -### 侦听是否连上网络 +### 设置轮询时间和地址 ```js -window.onLineHandler = function(){ +var net = onlinenetwork({ + "time":1000, + "url":"http://*******.com/ping.php" +}) +``` + +### 连上网络执行 + +``` +net.onLineHandler(function(){ console.log("连上了!") -}; +}) ``` -### 侦听是否断开网络 +### 断开网络执行 ```js -window.offLineHandler = function(){ +net.offLineHandler(function(){ console.log("断开网络!") -}; +}) ``` + diff --git a/online.js b/online.js index eaf36ab..7dc1a90 100644 --- a/online.js +++ b/online.js @@ -1,22 +1,31 @@ ;(function(w){ var xmlhttp = new XMLHttpRequest(), time=2000,//设置轮询时间 - url="http://********.com/online.php"; - //当 `url`为空的时候 默认所有浏览器使用 onLine 和 offline事件 + url ="",//当 `url`为空的时候 默认所有浏览器使用 onLine 和 offline事件 + OL = OL || {}; - w.onlinenetwork = w.onlinenetwork || {}; - w.onlinenetwork = { + OL={ + OL_api:{//扩展API + onLineHandler:function(func){ + onlinenetwork.online=func + return this + }, + offLineHandler:function(func){ + onlinenetwork.offline=func + return this + } + }, setStatus:function (newStatus) { this.eventStatus(newStatus); w.onLine = newStatus; }, //状态改变执行事件 eventStatus: function (newStatus) { - if (newStatus === true && w.onLineHandler !== undefined && (w.onLine !== true || this.handlerFired === false)) { - w.onLineHandler(); + if (newStatus === true && onlinenetwork.online !== undefined && (w.onLine !== true || this.handlerFired === false)) { + onlinenetwork.online(); } - if (newStatus === false && w.offLineHandler !== undefined && (w.onLine !== false || this.handlerFired === false)) { - w.offLineHandler(); + if (newStatus === false && onlinenetwork.offline !== undefined && (w.onLine !== false || this.handlerFired === false)) { + onlinenetwork.offline(); } this.handlerFired = true; }, @@ -41,7 +50,7 @@ this.tryToSend(xmlhttp); }, processXmlhttpStatus: function () { - var tempOnLine = w.onlinenetwork.verifyStatus(xmlhttp.status); + var tempOnLine = this.verifyStatus(xmlhttp.status); this.setStatus(tempOnLine); }, //尝试发送请求 @@ -62,7 +71,10 @@ }, //非 chrome 和 Safari 浏览器不停的检查,嘿嘿 startCheck:function(){ - setInterval("window.onlinenetwork.XMLHttpLogic(true)",time); + var self = this + setInterval(function(){ + self.XMLHttpLogic(true) + },time); }, //第一次检查是否在线 checkOnLine:function(){ @@ -79,13 +91,15 @@ getExplorer: function(newStatus){ var explorer = window.navigator.userAgent; this.setStatus(newStatus) + console.log(explorer) + console.log(url) if((explorer.indexOf('Firefox') >= 0 || explorer.indexOf('MSIE') >= 0)&&url){ - console.log("test:1") + console.log("getExplorer:1") this.checkOnLine() this.setStatus(newStatus) this.startCheck(newStatus) }else{ - console.log("test:2") + console.log("getExplorer:2") this.eventStatus(newStatus) } }, @@ -112,6 +126,15 @@ this.handlerFired = false; } } - w.onlinenetwork.init() - + + onlinenetwork=function (json){ + if(json){ + if (json.time) time=json.time; + if (json.url) url=json.url; + } + OL.init() + for (var a in OL.OL_api) this[a]=OL.OL_api[a]; + return this + } + w.onlinenetwork=onlinenetwork })(window); \ No newline at end of file diff --git a/test.html b/test.html index d3f0910..09a7824 100644 --- a/test.html +++ b/test.html @@ -8,12 +8,19 @@ \ No newline at end of file