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 isArray 数组类型检测函数
Oct 08 Javascript
jquery获得下拉框值的代码
Aug 13 Javascript
jquery实现奇偶行赋值不同css值
Feb 17 Javascript
JQuery表格内容过滤的实现方法
Jul 05 Javascript
jquery实现对联广告的方法
Feb 05 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
Dec 07 Javascript
React Native AsyncStorage本地存储工具类
Oct 24 Javascript
vue-cli 3.x 修改dist路径的方法
Sep 19 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
JavaScript中作用域链的概念及用途讲解
Aug 06 Javascript
vue实现防抖的实例代码
Jan 11 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
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
多文件上载系统完整版
2006/10/09 PHP
在线增减.htpasswd内的用户
2006/10/09 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
js实现简单的可切换选项卡效果
2015/04/10 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
python网络编程学习笔记(一)
2014/06/09 Python
python3 pygame实现接小球游戏
2019/05/14 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
python ChainMap的使用和说明详解
2019/06/11 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
小学门卫岗位职责
2013/12/17 职场文书
学校施工安全责任书
2015/01/29 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
Python+Tkinter制作专属图形化界面
2022/04/01 Python
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server