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 非图片动态loading效果实现代码
Apr 09 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
Jan 09 Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 Javascript
js获取及判断键盘按键的方法
Dec 01 Javascript
JavaScript数据类型学习笔记
Jan 25 Javascript
Web安全测试之XSS实例讲解
Aug 15 Javascript
详解AngularJs中$resource和restfu服务端数据交互
Sep 21 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
Jan 23 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
Javascript设计模式之原型模式详细
Oct 05 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 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
python中hashlib模块用法示例
2017/10/30 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
对pandas中Series的map函数详解
2018/07/25 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
解放思想大讨论活动心得体会
2014/09/11 职场文书
二手房购房意向书
2015/05/09 职场文书
少年犯观后感
2015/06/11 职场文书
企业愿景口号
2015/12/25 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python