使用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 订制自己的AlertBox(信息提示框)
Jan 09 Javascript
JavaScript入门教程(11) js事件处理
Jan 31 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
浅谈轻量级js模板引擎simplite
Feb 13 Javascript
学JavaScript七大注意事项【必看】
May 04 Javascript
html5+canvas实现支持触屏的签名插件教程
May 08 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 Javascript
JavaScript设计模式之观察者模式实例详解
Jan 16 Javascript
vue.js实现的幻灯片功能示例
Jan 18 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 Javascript
在JavaScript中如何使用宏详解
May 06 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
PHP_Flame(Version:Progress)的原代码
2006/10/09 PHP
php中常用编辑器推荐
2007/01/02 PHP
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
比较详细PHP生成静态页面教程
2012/01/10 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
jquery动态加载图片数据练习代码
2011/08/04 Javascript
js Dialog 实践分享
2012/10/22 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
Python list操作用法总结
2015/11/10 Python
Python实现简单字典树的方法
2016/04/29 Python
Python 加密的实例详解
2017/10/09 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
什么是封装
2013/03/26 面试题
外贸采购员求职的自我评价
2013/11/26 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
怎样写离婚协议书
2015/01/26 职场文书
一条慢SQL语句引发的改造之路
2022/03/16 MySQL
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server