使用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 实现打印网页中定义的部分内容的代码
Apr 01 Javascript
jQuery温习篇 强大的JQuery选择器
Apr 24 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
Mar 19 Javascript
jquery中通过父级查找进行定位示例
Jun 28 Javascript
jquery+php实现搜索框自动提示
Nov 28 Javascript
jquery禁止回车触发表单提交
Dec 12 Javascript
angularJS 入门基础
Feb 09 Javascript
微信小程序url传参写变量的方法
Aug 09 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
May 01 Javascript
jQuery实现简易聊天框
Feb 08 jQuery
vue自动添加浏览器兼容前后缀操作
Aug 13 Javascript
vue递归实现树形组件
Jul 15 Vue.js
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
第十四节--命名空间
2006/11/16 PHP
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
laravel学习教程之关联模型
2016/07/30 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
PDO实现学生管理系统
2020/03/21 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
Python实现豆瓣图片下载的方法
2015/05/25 Python
详解python时间模块中的datetime模块
2016/01/13 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
python实现复制大量文件功能
2019/08/31 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
营销与策划应届生求职信
2013/11/04 职场文书
初中三年学生的学习自我评价
2013/11/13 职场文书
工厂保洁员岗位职责
2013/12/04 职场文书
高分子材料与工程专业个人求职信
2013/12/15 职场文书
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
新闻编辑求职信
2014/04/09 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
四风查摆剖析材料
2014/10/10 职场文书
小王子读书笔记
2015/06/29 职场文书
小学教师教学反思
2016/02/24 职场文书