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 相关文章推荐
一个用js实现控制台控件的代码
Sep 04 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
Javascript小技能总结(推荐)
Jun 02 Javascript
jQuery.Callbacks()回调函数队列用法详解
Jun 14 Javascript
vue 2.0组件与v-model详解
Mar 27 Javascript
node.js基于express使用websocket的方法
Nov 09 Javascript
Node.js事件的正确使用方法
Apr 05 Javascript
javascript 内存模型实例详解
Apr 18 Javascript
JS script脚本中async和defer区别详解
Jun 24 Javascript
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
Mar 31 jQuery
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 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
axios基本入门用法教程
2017/03/25 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
处理Python中的URLError异常的方法
2015/04/30 Python
python daemon守护进程实现
2016/08/27 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
自荐信需注意事项
2014/01/25 职场文书
干部考核评语
2014/04/29 职场文书
工作保证书怎么写
2015/02/28 职场文书
公司捐书倡议书
2015/04/27 职场文书
太行山上观后感
2015/06/05 职场文书
《穷人》教学反思
2016/02/19 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL