javascript检测是否联网的实现代码


Posted in Javascript onSeptember 28, 2014

最简单粗暴的方式就是加载网络资源,JS文件或者图片文件。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

typeof window.jQuery === "undefined" // return false or ture

用jQuery变量来检测是否联网

function doConnectFunction() {
  return true;
}
function doNotConnectFunction() {
  return false;
}

 var i = new Image();
i.onload = doConnectFunction;
i.onerror = doNotConnectFunction;
i.src = 'http://su.bdimg.com/static/superplus/img/logo_white.png?d=' + escape(Date());

加载网络资源的问题就是检测的互联网,如果是局域网检测是无能为力了。
这时候需要一个更好的解决方案,就要用到navigator.onLine,这个属性比较坑的就是浏览器兼容,chrome、Safari 都完美支持,IE7以上是支持的。火狐和IE6比较坑,只有在浏览器“脱机状态”下才返回false,其他都返回true。掐了网线都是true,Opera直接不支持了。

所以还得加一个兼容方法:给location.hostname地址发一个http头请求,代码如下:

var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );
var status;
xhr.open( "HEAD", "//" + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false );
 try {
  xhr.send();
  return ( xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 );
 } catch (error) {
  return false;
 }

里面一个要注意的就是open方法的第三个参数要传false,必须是同步请求。

总结:支持navigator.onLine的浏览器就用navigator.onLine,不支持的就发一个http头请求。

原创文章,转载请注明: 转载自前端开发

Javascript 相关文章推荐
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
jquery 3D球状导航的文章分类
Jul 06 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
JS实现的车标图片提示效果代码
Oct 10 Javascript
Bootstrap 模态框(Modal)插件代码解析
Dec 21 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
解决node-sass偶尔安装失败的方法小结
Dec 05 Javascript
Three.JS实现三维场景
Dec 30 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
javascript检测浏览器的缩放状态实现代码
Sep 28 #Javascript
Node.js中使用mongoskin操作mongoDB实例
Sep 28 #Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 #Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Sep 26 #Javascript
简单方法判断JavaScript对象为null或者属性为空
Sep 26 #Javascript
jquery uploadify 在FF下无效的解决办法
Sep 26 #Javascript
jQuery判断当前点击的是第几个li的代码
Sep 26 #Javascript
You might like
一个PHP的String类代码
2010/04/20 PHP
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
JavaScript&quot;模拟事件&quot;的注意要点详解
2019/02/13 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
详解python中的index函数用法
2019/08/06 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
光荣入党自我鉴定
2014/01/22 职场文书
灰雀教学反思
2014/04/28 职场文书
客房服务员岗位职责
2015/02/09 职场文书
小学生读书笔记范文
2015/06/30 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书