如何使用jQuery检查是否有一个互联网连接?这样我就可以设置一些条件,比如“在制作过程中使用谷歌缓存版本的JQuery,在开发过程中使用谷歌缓存版本或本地版本,这取决于互联网连接”。
当前回答
一个更简单的解决方案:
<script language="javascript" src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
之后在代码中:
var online;
// check whether this function works (online only)
try {
var x = google.maps.MapTypeId.TERRAIN;
online = true;
} catch (e) {
online = false;
}
console.log(online);
当没有联机时,谷歌脚本将不会被加载,从而导致抛出异常的错误。
其他回答
您可以模拟Ping命令。
使用Ajax请求一个时间戳到你自己的服务器,定义一个计时器使用setTimeout到5秒,如果没有响应它再试一次。
如果4次尝试都没有响应,你可以假设网络坏了。
所以你可以每隔一到三分钟就检查一下。
对我来说,这似乎是一个很好的干净的解决方案。
一个更简单的解决方案:
<script language="javascript" src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
之后在代码中:
var online;
// check whether this function works (online only)
try {
var x = google.maps.MapTypeId.TERRAIN;
online = true;
} catch (e) {
online = false;
}
console.log(online);
当没有联机时,谷歌脚本将不会被加载,从而导致抛出异常的错误。
你可以尝试发送XHR请求几次,然后如果你得到错误,这意味着有一个问题与互联网连接。
5年后的版本:
今天,如果你不想深入了解本页所描述的不同方法的细节,就可以找到适合你的JS库。
其中一个是https://github.com/hubspot/offline。它检查预定义URI的连通性,默认情况下是您的favicon。当用户的连接重新建立时,它会自动检测,并提供up和down等整洁的事件,您可以将其绑定以更新UI。
发送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文档可以在这里找到。
推荐文章
- 在JavaScript中根据键值查找和删除数组中的对象
- 防止在ASP中缓存。NET MVC中使用属性的特定操作
- jQuery: keyPress退格键不火?
- XMLHttpRequest Origin null不允许Access-Control-Allow-Origin for file:/// to file:///(无服务器)
- 重置setTimeout
- jQuery有不聚焦的方法吗?
- jQuery -替换字符串中某个字符的所有实例
- Ng-repeat结束事件
- 模糊vs聚焦-有什么真正的区别吗?
- 如何用jQuery / JavaScript解析JSON数据?
- jQuery在请求体中发布有效的json
- jQuery中的live()转换为on()
- jQuery等价于JavaScript的addEventListener方法
- jQuery需要避免的陷阱
- 用jQuery切换DIV背景图像