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 相关文章推荐
动态添加js事件实现代码
Mar 12 Javascript
jquery $(document).ready() 与window.onload的区别
Dec 28 Javascript
jquery判断元素的子元素是否存在的示例代码
Feb 04 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
Javascript基础回顾之(一) 类型
Jan 31 Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
JS实现网站吸顶条
Jan 08 Javascript
jQuery AJAX应用实例总结
May 19 jQuery
react结合bootstrap实现评论功能
May 30 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判断远程url是否有效的几种方法小结
2011/10/08 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
php生成验证码函数
2015/10/20 PHP
php格式化json函数示例代码
2016/05/12 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
js分页工具实例
2015/01/28 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
深入解析Python中的集合类型操作符
2015/08/19 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
python中的colorlog库使用详解
2019/07/05 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
春节晚会主持词
2014/03/24 职场文书
电视节目策划方案
2014/05/16 职场文书
酒店开业策划方案
2014/06/02 职场文书
教师演讲稿开场白
2014/08/25 职场文书
2015年营业员工作总结
2015/04/23 职场文书
闪闪红星观后感
2015/06/08 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python