如何使用jQuery检查是否有一个互联网连接?这样我就可以设置一些条件,比如“在制作过程中使用谷歌缓存版本的JQuery,在开发过程中使用谷歌缓存版本或本地版本,这取决于互联网连接”。
当前回答
你可以尝试发送XHR请求几次,然后如果你得到错误,这意味着有一个问题与互联网连接。
其他回答
你可以尝试发送XHR请求几次,然后如果你得到错误,这意味着有一个问题与互联网连接。
我写了一个jQuery插件来做这个。默认情况下,它检查当前URL(因为已经从Web加载了一次),或者您可以指定一个URL作为参数使用。总是向谷歌请求不是最好的主意,因为它在不同的国家在不同的时间被阻止。另外,你可能会受到当天特定海洋/天气前沿/政治气候的影响。
http://tomriley.net/blog/archives/111
发送XHR请求很糟糕,因为如果特定的服务器宕机,它可能会失败。相反,使用google的API库来加载他们的jQuery缓存版本。
你可以使用google API在加载jQuery后执行回调,这将检查jQuery是否加载成功。类似下面的代码应该可以工作:
<script type="text/javascript">
google.load("jquery");
// Call this function when the page has been loaded
function test_connection() {
if($){
//jQuery WAS loaded.
} else {
//jQuery failed to load. Grab the local copy.
}
}
google.setOnLoadCallback(test_connection);
</script>
谷歌API文档可以在这里找到。
您可以模拟Ping命令。
使用Ajax请求一个时间戳到你自己的服务器,定义一个计时器使用setTimeout到5秒,如果没有响应它再试一次。
如果4次尝试都没有响应,你可以假设网络坏了。
所以你可以每隔一到三分钟就检查一下。
对我来说,这似乎是一个很好的干净的解决方案。
我有一个解决办法,在这里工作,检查是否有网络连接:
$.ajax({
url: "http://www.google.com",
context: document.body,
error: function(jqXHR, exception) {
alert('Offline')
},
success: function() {
alert('Online')
}
})
推荐文章
- 可以在setInterval()内部调用clearInterval()吗?
- 无法读取未定义的属性“msie”- jQuery工具
- jQuery:执行同步AJAX请求
- jQuery表格排序
- 如何禁用文本选择使用jQuery?
- 如何停止事件冒泡复选框点击
- Bootstrap抛出Uncaught错误:Bootstrap的JavaScript需要jQuery
- 如何删除和清除所有的本地存储数据
- 如何修改标签文本?
- 如何获得十六进制颜色值而不是RGB值?
- 如何将一个标题转换为jQuery的URL段塞?
- $(window).width()与媒体查询不一样
- AJAX请求中的内容类型和数据类型是什么?
- 如何打破_。在underscore.js中的每个函数
- 如何在jQuery中获得当前日期?