javascript判断机器是否联网的2种方法


Posted in Javascript onAugust 09, 2013

在很多场景下,只有机器已经联网以后,web应用才能启动。如果没有联网,就会提示错误。、
但是机器有时候要重启。 如果机器重启后,立刻启动web应用的话,可能,机器上的网络服务还没有准备好。

特别是windows7,启动网络服务需要好几秒,这个时候怎么办呢?
之前尝试过几种方法:
比如 通过ping来判断, 但是ping需要有一个非本机的ip地址。 这个不是很通用
比如监控某个端口是否已经被占用,但是光端口占用,也不能说明网络已经启动了。
另一个方面,如果是web应用的话,最好是在前端判断,比如用javascript。
网上也有人写 javascript 的ping的模拟效果。但确实有些麻烦。
怎么办呢,关键的时候,还是html5能给出好的解决方法:

方法一:
navigator.onLine

if (navigator.onLine) 
{ //正常工作} 
else { //执行离线状态时的任务}

这个html5的 navigator的新特性可以很简单帮我们搞定
HTML5为此定义了一个navigator.onLine属性,这个属性值为true表示设备能上网,值为false表示设备离线。
当然不同的浏览器,对这个的支持还不太一样
IE6+和Safari 5+支持的比较好
Firefox 3+和支持navigator.onLine属性,但你必须手工选中菜单项“文件-Web开发人员(设置)-脱机工作”才能让浏览器正常的工作。
Chrome需要12以上。

方法二:
当然,如果想支持的更兼容,可以使用如下2个事件:online和offline。当网络从离线变为在线或者从在线变为离线时,分别触发这两个事件。这两个事件在window对象上触发。
为了检测应用是否离线,在页面加载后,最好先通过navigator.onLine取得初始的状态。然后,就是通过上述两个事件来确定网络连接状态是否变化。当上述事件触发式,navigator.onLine属性的值也会改变,不过必须要手工轮询这个属性才能检测到网络状态的变化。

var EventUtil = { 
addHandler: function (element, type, handler) { 
if (element.addEventListener) { 
element.addEventListener(type, handler, false); 
} else if (element.attachEvent) { 
element.attachEvent("on" + type, handler); 
} else { 
element["on" + type] = handler; 
} 
} 
}; 
EventUtil.addHandler(window, "online", function () { 
alert("Online"); 
}); 
EventUtil.addHandler(window, "offline", function () { 
alert("Offline"); 
});
Javascript 相关文章推荐
JQuery判断radio是否选中并获取选中值的示例代码
Oct 17 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
Sep 04 Javascript
javascript函数中的3个高级技巧
Sep 22 Javascript
axios基本入门用法教程
Mar 25 Javascript
Javascript 实现匿名递归的实例代码
May 25 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
Nov 27 Javascript
js中Generator函数的深入讲解
Apr 07 Javascript
Vue中对iframe实现keep alive无刷新的方法
Jul 23 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
Nov 07 Javascript
node后端服务保活的实现
Nov 10 Javascript
微信小程序实现watch监听
Jun 04 Javascript
jquery 列表双向选择器之改进版
Aug 09 #Javascript
jquery 简单应用示例总结
Aug 09 #Javascript
JS命名空间的另一种实现
Aug 09 #Javascript
使用javascript创建快捷方式的简单实例
Aug 09 #Javascript
使用js修改客户端注册表的方法
Aug 09 #Javascript
jquery 利用show和hidden实现级联菜单示例代码
Aug 09 #Javascript
jQuery :first选择器使用介绍
Aug 09 #Javascript
You might like
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
php把数组值转换成键的方法
2015/07/13 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
对Python信号处理模块signal详解
2019/01/09 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python ETL工具 pyetl
2020/06/07 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
幼儿园安全生产月活动总结
2014/07/05 职场文书
委托书的格式
2014/08/01 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
物业保安辞职信
2015/05/12 职场文书
男人帮观后感
2015/06/18 职场文书
教师病假条范文
2015/08/17 职场文书
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL