【发布时间】:2012-09-18 09:56:24
【问题描述】:
当然,假设没有互联网连接。像 jQuery 方法一样?
【问题讨论】:
标签: javascript jquery
当然,假设没有互联网连接。像 jQuery 方法一样?
【问题讨论】:
标签: javascript jquery
我会尝试向您知道在线的几台服务器发出 HEAD 请求(不下载内容)。如果没有网络,它们会自动失败(无需设置超时)。
$.ajax({
type: "HEAD",
url: 'http://www.google.com',
error: function() {
alert('world is gone !');
}
});
DEMONSTRATION(拔下网络进行测试)
【讨论】:
navigator.onLine 应该就足够了——看我的回答。
如果您正在处理 ajax 请求,您可以捕获 timeout 错误 - 请参阅 $.ajax 参考中的 error(jqXHR, textStatus, errorThrown)。
【讨论】:
有点,是的。在实际提交之前,您可以拨打ajax 尝试连接到您网站上的一个简单的轻量级服务,以检查它是否可以访问。
如果调用失败,你可以假设没有连接。
【讨论】:
借助失败的 XHR 请求,您可以确定连接。 重试几次,如果请求没有通过,警告并优雅地失败。
我可以使用我从http://jamiethompson.co.uk/web/2008/06/17/publish-subscribe-with-jquery/得到的这个功能
$.networkDetection = function(url,interval){
var url = url;
var interval = interval;
online = false;
this.StartPolling = function(){
this.StopPolling();
this.timer = setInterval(poll, interval);
};
this.StopPolling = function(){
clearInterval(this.timer);
};
this.setPollInterval= function(i) {
interval = i;
};
this.getOnlineStatus = function(){
return online;
};
function poll() {
$.ajax({
type: "POST",
url: url,
dataType: "text",
error: function(){
online = false;
$(document).trigger('status.networkDetection',[false]);
},
success: function(){
online = true;
$(document).trigger('status.networkDetection',[true]);
}
});
};
};
【讨论】:
一种方法是使用 AJAX 发送表单。然后你会有一个处理程序,它会告诉你它无法连接到服务器,你可以保存数据并通知用户服务器不可用。问题是您的互联网连接还是服务器可能已关闭并不重要。
【讨论】:
if (navigator.onLine) {
alert('online');
} else {
alert('offline');
}
【讨论】: