使用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也能使用EXTJS视频演示
Dec 29 Javascript
javascript document.compatMode兼容性
Feb 23 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
Oct 29 Javascript
解析使用JS 清空File控件的路径值
Jul 08 Javascript
使用jquery获取网页中图片高度的两种方法
Sep 26 Javascript
javascript面向对象快速入门实例
Jan 13 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
详解node中创建服务进程
May 09 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
Jan 12 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
May 08 Javascript
微信小程序 scroll-view的使用案例代码详解
Jun 11 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 XML error parsing SOAP payload on line 1
2010/06/17 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
js正则相关知识点专题
2018/05/10 Javascript
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
[17:36]VG战队纪录片
2014/08/21 DOTA
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
python爬虫实现中英翻译词典
2019/06/25 Python
python双向链表原理与实现方法详解
2019/12/03 Python
Python调用C语言程序方法解析
2020/07/07 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
个人自荐书
2013/12/20 职场文书
护林防火标语
2014/06/27 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
八达岭长城导游词
2015/01/30 职场文书
教师思想工作总结2015
2015/05/13 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python