使用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 相关文章推荐
在IE上直接编辑网页内容的js代码(IE地址栏js)
Apr 27 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
浅谈html转义及防止javascript注入攻击的方法
Dec 04 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
Feb 09 Javascript
JavaScript中数组的各种操作的总结(必看篇)
Feb 13 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
利用vue + element实现表格分页和前端搜索的方法
Dec 25 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
微信小程序自定义select下拉选项框组件的实现代码
Aug 28 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
vue 解决数组赋值无法渲染在页面的问题
Oct 28 Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
php 常用类整理
2009/12/23 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
php连接mysql数据库
2017/03/21 PHP
JavaScript中5种调用函数的方法
2015/03/12 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
JS实现的简单拖拽功能示例
2017/03/13 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
Delphi CS笔试题
2014/01/04 面试题
回门宴父母答谢词
2014/01/26 职场文书
三八妇女节活动总结
2014/05/04 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
初一英语教学反思
2016/02/15 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
JavaScript 数组去重详解
2021/09/15 Javascript