使用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 相关文章推荐
Add a Formatted Table to a Word Document
Jun 15 Javascript
向大师们学习Javascript(视频与PPT)
Dec 27 Javascript
下拉菜单点击实现连接跳转功能的js代码
May 19 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
Nov 14 Javascript
jQuery.trim() 函数及trim()用法详解
Oct 26 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
Jun 15 Javascript
ES6中的Promise代码详解
Oct 09 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
Jan 24 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
Apr 28 Javascript
JS使用H5实现图片预览功能
Sep 30 Javascript
vue 获取及修改store.js里的公共变量实例
Nov 06 Javascript
jQuery开发仿QQ版音乐播放器
Jul 10 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
基于php使用memcache存储session的详解
2013/06/25 PHP
php图片缩放实现方法
2014/02/20 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
JS实现小米轮播图
2020/09/21 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
python3图片转换二进制存入mysql
2013/12/06 Python
Python实现获取网站PR及百度权重
2015/01/21 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
Python中pass语句的作用是什么
2016/06/01 面试题
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
回门宴答谢词
2014/01/13 职场文书
给客户的道歉信
2014/01/13 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
工作室成员个人发展规划范文
2014/01/24 职场文书
退休感言
2014/01/28 职场文书
西式婚礼主持词
2014/03/13 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
纯html+css实现打字效果
2021/08/02 HTML / CSS
MySQL时区造成时差问题
2022/04/13 MySQL