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 相关文章推荐
JavaScript 封装Ajax传递的数据代码
Jun 05 Javascript
JavaScript性能陷阱小结(附实例说明)
Dec 28 Javascript
DOM2非标准但却支持很好的几个属性小结
Jan 21 Javascript
javascript检测两个数组是否相似
May 19 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
Mar 08 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
Apr 08 Javascript
javascript实现简单的可随机变色网页计算器示例
Dec 30 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
Vue拖拽组件列表实现动态页面配置功能
Jun 17 Javascript
浅谈javascript事件环微任务和宏任务队列原理
Sep 12 Javascript
vue组件中传值EventBus的使用及注意事项说明
Nov 16 Javascript
详解如何使用Node.js实现热重载页面
May 06 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&&mysql)四
2006/10/09 PHP
PHP如何编写易读的代码
2007/07/10 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
2018/05/28 PHP
让您的菜单不离网站
2006/10/03 Javascript
JQuery 小练习(实例代码)
2009/08/07 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
Underscore源码分析
2015/12/30 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
Python 多线程的实例详解
2017/09/07 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
工作态度检讨书
2014/02/11 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
2014年业务工作总结
2014/11/17 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
2015年采购员工作总结
2015/04/27 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
放假通知怎么写
2015/08/18 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python