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 相关文章推荐
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
Jquery修改页面标题title其它JS失效的解决方法
Oct 31 Javascript
详解javascript实现瀑布流绝对式布局
Jan 29 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 Javascript
Vue 仿百度搜索功能实现代码
Feb 16 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
Aug 29 jQuery
Bootstrap Tooltip显示换行和左对齐的解决方案
Oct 11 Javascript
详解.vue文件解析的实现
Jun 11 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 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新手上路(三)
2006/10/09 PHP
学习php中的正则表达式
2014/08/17 PHP
详解php中的implements 使用
2017/06/13 PHP
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
Python库urllib与urllib2主要区别分析
2014/07/13 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
python计算列表内各元素的个数实例
2018/06/29 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
Python matplotlib实时画图案例
2020/04/23 Python
python绘图模块之利用turtle画图
2021/02/12 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
小学教师年度个人总结
2015/02/05 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
鉴史问廉观后感
2015/06/10 职场文书
在校学生证明格式
2015/06/24 职场文书
酒店员工管理制度
2015/08/05 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python