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 querySelector和getElementById通过id获取元素的区别
Apr 20 Javascript
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 Javascript
关于Javascript 对象(object)的prototype
May 09 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
javascript去除空格方法小结
May 21 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
Aug 25 Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 Javascript
详解Vue中添加过渡效果
Mar 20 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
使用vue实现多规格选择实例(SKU)
Aug 23 Javascript
Vue 实现把表单form数据 转化成json格式的数据
Oct 29 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和ACCESS写聊天室(三)
2006/10/09 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
JS与框架页的操作代码
2010/01/17 Javascript
javascript 精粹笔记
2010/05/09 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python Mysql自动备份脚本
2008/07/14 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
pandas 将索引值相加的方法
2018/11/15 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
终端业务员岗位职责
2013/11/27 职场文书
大学毕业感言
2014/01/10 职场文书
护士求职自荐信范文
2014/03/19 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android
TypeScript 内置高级类型编程示例
2022/09/23 Javascript