使用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 相关文章推荐
js常用代码段整理
Nov 30 Javascript
js设置组合快捷键/tabindex功能的方法
Nov 21 Javascript
jQuery中toggleClass()方法用法实例
Jan 05 Javascript
JavaScript控制网页层收起和展开效果的方法
Apr 15 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
js实现登录与注册界面
Nov 01 Javascript
原生js调用json方法总结
Feb 22 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
May 16 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 Javascript
vue接口请求加密实例
Aug 11 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 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/01/02 PHP
PHP实现微信对账单处理
2018/10/01 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
python实现中文文本分句的例子
2019/07/15 Python
Django celery异步任务实现代码示例
2020/11/26 Python
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
护士毕业生自荐信
2014/02/07 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
八月迷情观后感
2015/06/11 职场文书
基石观后感
2015/06/12 职场文书
JS的深浅复制详细
2021/10/16 Javascript
MYSQL 表的全面总结
2021/11/11 MySQL