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 相关文章推荐
JavaScript Prototype对象
Jan 07 Javascript
鼠标滑在标题上显示图片的JS代码
Nov 19 Javascript
Javascript基础教程之变量
Jan 18 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
May 16 Javascript
javascript设计模式之对象工厂函数与构造函数详解
Jul 30 Javascript
js实现将选中值累加到文本框的方法
Aug 12 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
Jan 22 Javascript
学习使用Bootstrap页面排版样式
May 11 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 Javascript
vue 父组件调用子组件方法及事件
Mar 29 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
详解ES6 CLASS在微信小程序中的应用实例
Apr 24 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闭包(Closure)使用详解
2013/05/02 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
vue实现节点增删改功能
2019/09/26 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
Python多层装饰器用法实例分析
2018/02/09 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
酒店公关部经理岗位职责
2013/11/24 职场文书
学校四风对照检查材料
2014/08/28 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
自我检讨书范文
2015/01/28 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
庭外和解协议书
2016/03/23 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
Django框架中模型的用法
2022/06/10 Python