神奇的是在这里完成
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/
PS。那么这个问题就出现了。事情发生了变化,因为 – FabianCook 2013-05-03 13:00:16