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获取页面上某个元素的代码
Mar 13 Javascript
AngularJS实现路由实例
Feb 12 Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
Apr 07 Javascript
Angular 表单控件示例代码
Jun 26 Javascript
详解EasyUi控件中的Datagrid
Aug 23 Javascript
vue.js路由跳转详解
Aug 28 Javascript
vue.js实现简单轮播图效果
Oct 10 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
Dec 18 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
Nov 06 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
Dec 30 Javascript
Vue中正确使用Element-UI组件的方法实例
Oct 13 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 动态随机生成验证码类代码
2010/04/09 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
原生js开发的日历插件
2017/02/04 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
python去掉行尾的换行符方法
2017/01/04 Python
flask-restful使用总结
2018/12/04 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
美国旅游网站:Tours4Fun
2017/02/17 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
个人收入证明范本
2014/01/12 职场文书
安全检查验收制度
2014/01/12 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
小学捐书活动总结
2014/07/05 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
毕业典礼主持词
2015/06/29 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL