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 相关文章推荐
IE无法设置短域名下Cookie
Sep 23 Javascript
JavaScript全排列的六种算法 具体实现
Jun 29 Javascript
jquery重新播放css动画所遇问题解决
Aug 21 Javascript
javascript内存管理详细解析
Nov 11 Javascript
javascript 表格内容排序 简单操作示例代码
Jan 03 Javascript
js返回前一页刷新本页重载页面
Jul 29 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
浅析在javascript中创建对象的各种模式
May 06 Javascript
最全面的百度地图JavaScript离线版开发
Sep 10 Javascript
Swiper自定义分页器使用详解
Dec 28 Javascript
微信小程序云开发实现数据添加、查询和分页
May 17 Javascript
JS 5种遍历对象的方式
Jun 16 Javascript
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中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
JavaScript实现修改伪类样式
2017/11/27 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
Python处理字符串之isspace()方法的使用
2015/05/19 Python
Django Highcharts制作图表
2016/08/27 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
审核会计岗位职责
2013/11/08 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
复兴之路观后感
2015/06/02 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS