使用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 相关文章推荐
Javascript调用XML制作连动下拉列表框
Jun 25 Javascript
用js做一个小游戏平台 (一)
Dec 29 Javascript
编写可维护面向对象的JavaScript代码[翻译]
Feb 12 Javascript
js中substring和substr的定义和用法
May 05 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
javascript实现方法调用与方法触发小结
Mar 26 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
基于vue 实现token验证的实例代码
Dec 14 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
微信公众号平台接口开发 菜单管理的实现
Aug 14 Javascript
ant-design-vue 快速避坑指南(推荐)
Jan 21 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表单处理操作
2017/11/16 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
JavaScript中null与undefined分析
2009/07/25 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python 基础之字符串string详解及实例
2017/04/01 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
职工代表大会主持词
2014/04/01 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
学雷锋月活动总结
2014/04/25 职场文书
少先队活动总结
2014/08/29 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
国庆节标语大全
2014/10/08 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
vue选项卡切换的实现案例
2022/04/11 Vue.js