使用JS在浏览器中判断当前网络连接状态的几种方法


Posted in Javascript onMay 05, 2017

使用JS在浏览器中判断当前网络状态的几种方法如下:

1. navigator.onLine

2. ajax请求

3. 获取网络资源

4. bind()

1. navigator.onLine

通过navigator.onLine判断当前网络状态:

if(navigator.onLine){
 ...
}else{
 ...
}

非常简单,但是并不准确-根据MDN的描述:

navigator.onLine只会在机器未连接到局域网或路由器时返回false,其他情况下均返回true。

也就是说,机器连接上路由器后,即使这个路由器没联通网络,navigator.onLine仍然返回true。

2. ajax请求

采用get请求的方式,根据返回值判断是否能够成功get到数据,从而确定当前的网络状态:

$.ajax({
 url: 'x.html',
 success: function(result){
  ...
 }, 
 error: function(result){
  ...
 }
});

3. 获取网络资源

原理同2,在页面放一张隐藏图片,设置其onerror函数(获取图片资源失败时会调用该函数):

<script src="./jquery-3.1.1.min.js"></script>
<script>
function getImgError(){
 alert("Network disconnect!");
}
$().ready(function(){
 $("#btn-test").click(function(){
  var imgPath = "https://www.baidu.com/img/bd_logo1.png";
  var timeStamp = Date.parse(new Date());
  $("#img-test").attr("src", imgPath + "?timestamp=" + timeStamp);
 });
});
</script>
<body>
 <img id="img-test" style="display:none;" onerror="getImgError()"/>
 <button id="btn-test">check status</button>
</body>

每次点击button时,更新该图片的src。若获取图片失败,则认为网络连接失败

这种判断网络状态的准确完全取决于图片资源是否稳定。。。

4. bind()

原理同1:

var netStatue = true;
$(window).bind('online', function(){
 netStatue = true;
});
$(window).bind('offline', function(){
 netStatue = false;
});
...
if(netStatue){
 ...
}else{
 ...
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
详解javascript中的事件处理
Nov 06 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
Jan 14 Javascript
jQuery实现的浮动层div浏览器居中显示效果
Feb 03 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
Jul 10 Javascript
jQuery实现用户信息表格的添加和删除功能
Sep 12 jQuery
Vue-Router2.X多种路由实现方式总结
Feb 09 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
Aug 27 Javascript
vue语法自动转typescript(解放双手)
Sep 18 Javascript
在Vue项目中使用Typescript的实现
Dec 19 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
Jun 04 Javascript
一文搞懂redux在react中的初步用法
Jun 09 Javascript
js实现倒计时关键代码
May 05 #Javascript
javascript 中的继承实例详解
May 05 #Javascript
JavaScript函数表达式详解及实例
May 05 #Javascript
Node.js中的http请求客户端示例(request client)
May 04 #Javascript
Bootstrap布局之栅格系统学习笔记
May 04 #Javascript
vue.js开发环境搭建教程
May 04 #Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 #jQuery
You might like
php表单敏感字符过滤类
2014/12/08 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
Javascript的闭包详解
2014/12/26 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
企业治理工作自我评价
2013/09/26 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
大家访活动实施方案
2014/03/10 职场文书
村居抓节水倡议书
2014/05/19 职场文书
女生节标语
2014/06/26 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
深入理解 Golang 的字符串
2022/05/04 Golang