一旦我在jsfiddle上摆弄,我就失去了互联网连接。然后,该网站提醒我,我没有互联网连接。在这里,点击禁用连接尝试:
与this不同,他们以某种方式实施了一个检查互联网连接而没有任何ajax请求的代码。
我在挖掘后找到了这个片段
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 :(得分: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);
}
}
在这里你可以尝试一下......