2013-05-03 53 views
0

当我在jsfiddle上摆弄时,我失去了互联网连接。然后,该网站提醒我我没有互联网连接。在这里,通过点击禁用您的连接给出一个尝试:
如何回拨在线/离线状态?

a sample code

它们在某种程度上实现哪些检查互联网连接没有任何Ajax请求不像this代码。

我发现这个片段经过一番挖掘

Heyoffline.prototype.setup = function() { 
    this.events = { 
    element: ['keyup', 'change'], 
    network: ['online', 'offline'] // THIS PART 
    }; 
    this.elements = { 
    fields: document.querySelectorAll(this.options.elements.join(',')), 
    overlay: document.createElement('div'), 
    modal: document.createElement('div'), 
    heading: document.createElement('h2'), 
    content: document.createElement('p'), 
    button: document.createElement('a') 
    }; 

但我不明白它是如何工作的,因为它是自动生成的。 LINK

任何人都可以摆脱一些光线,所以我可以在我的系统中实现这样的东西。

+0

PS。那么这个问题就出现了。事情发生了变化,因为 – FabianCook 2013-05-03 13:00:16

回答

0

神奇的是在这里完成

Heyoffline.prototype.networkEvents = function(event) { 
    return addEvent(window, event, this[event]); 
}; 

这就是所谓的attachEvents

Heyoffline.prototype.attachEvents = function() { 
     var event, field, _i, _j, _len, _len1, _ref, _ref1, 
     _this = this; 
     _ref = this.elements.fields; 
     for (_i = 0, _len = _ref.length; _i < _len; _i++) { 
      field = _ref[_i]; 
      this.elementEvents(field); 
     } 
     _ref1 = this.events.network; 
     for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { 
      event = _ref1[_j]; 
      this.networkEvents(event); //Called here 
     } 
     return addEvent(window, 'resize', function() { 
      return _this.resizeOverlay(); 
     }); 
    }; 

的情况下,无论在线或离线传递到这一点,addEvent函数定义

addEvent作为:

addEvent = function(element, event, fn, useCapture) { 
    if (useCapture == null) { 
     useCapture = false; 
    } 
    return element.addEventListener(event, fn, useCapture); 
}; 

那么真的有什么我可以看到使用在线/离线功能,所有你需要做的准备就是调用:

//online 
window.addEventListener('online', function(){alert('You are online')}, false); 
//offline 
window.addEventListener('offline', function(){alert('You are online')}, false); 

和鲍勃雅叔叔

这里测试,以及:http://jsfiddle.net/W4EKh/

jsfiddle之后警告出现,所以我很确定它是如何工作的...

还有,继承人的东西来帮忙:))...

function networkListener(a, b){ 
    var offlineF, onlineF; 
    if(a instanceof Function && b instanceof Function){ 
     onlineF = a; 
     offlineF = b; 
    }else if(a instanceof Function){ 
     if(typeof b === "string"){ 
      if(b === "online"){ 
       onlineF = a; 
      }else if(b === "offline"){ 
       offlineF = a; 
      } 
     }else{ 
      onlineF = a; 
     } 
    } 
    if(typeof onlineF !== "undefined"){ 
     window.addEventListener('online', onlineF, false); 
    } 
    if(typeof offlineF !== "undefined"){ 
     window.addEventListener('offline', offlineF, false); 
    } 
} 

在这里,你可以尝试一下......

http://jsfiddle.net/47N6L/2/

+1

感谢队友,这个答案比我想象的要多得多。 – 2013-05-03 14:30:27

+1

我很无聊:P玩这个功能。我在我的网络应用程序中使用它,所以是的:D – FabianCook 2013-05-04 00:28:09

相关问题