使用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中Math.SQRT2属性的使用详解
Jun 14 Javascript
jquery调整表格行tr上下顺序实例讲解
Jan 09 Javascript
JavaScript实现星星等级评价功能
Mar 22 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
3种vue组件的书写形式
Nov 29 Javascript
使用socket.io实现简单聊天室案例
Jan 02 Javascript
使用selenium抓取淘宝的商品信息实例
Feb 06 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
Mar 19 Javascript
JavaScript偏函数与柯里化实例详解
Mar 27 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
Jan 02 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
Apr 09 Javascript
jQuery zTree如何改变指定节点文本样式
Oct 16 jQuery
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
终于听上了直流胆调频
2021/03/02 无线电
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
python一键去抖音视频水印工具
2018/09/14 Python
python实现维吉尼亚加密法
2019/03/20 Python
python hashlib加密实现代码
2019/10/17 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
了解AppleTalk协议吗
2014/04/01 面试题
Shell脚本如何向终端输出信息
2014/04/25 面试题
创先争优活动党员公开承诺书
2014/08/29 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
统招统分证明
2015/06/23 职场文书
2016年社区文体活动总结
2016/04/06 职场文书