使用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 Prototype对象
Jan 07 Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 Javascript
JavaScript实现的石头剪刀布游戏源码分享
Aug 22 Javascript
AngularJS入门教程之迭代器过滤详解
Aug 18 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
Dec 02 Javascript
基于JavaScript实现百度搜索框效果
Jun 28 Javascript
使用JavaScript实现链表的数据结构的代码
Aug 02 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
Nov 01 Javascript
关于jquery layui弹出层的使用方法
Apr 21 jQuery
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
详解Node.js一行命令上传本地文件到服务器
Apr 22 Javascript
Vue修改项目启动端口号方法
Nov 07 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数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
python实现调用其他python脚本的方法
2014/10/05 Python
python通过post提交数据的方法
2015/05/06 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python join方法使用详解
2019/07/30 Python
对python中return与yield的区别详解
2020/03/12 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
《鸟岛》教学反思
2014/04/26 职场文书
财务部绩效考核方案
2014/05/04 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
投标邀请书范本
2015/02/02 职场文书
起诉状范本
2015/05/20 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL