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 相关文章推荐
对google个性主页的拖拽效果的js的完整注释[转]
Apr 10 Javascript
jquery 动态创建元素的方式介绍及应用
Apr 21 Javascript
node.js中的http.response.setHeader方法使用说明
Dec 14 Javascript
javascript 数组的正态分布排序的问题
Jul 31 Javascript
JQuery.validationEngine表单验证插件(推荐)
Dec 10 Javascript
关于Javascript中document.cookie的使用
Mar 08 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
使用JS判断移动端手机横竖屏状态
Jul 30 Javascript
vue.js 添加 fastclick的支持方法
Aug 28 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
Mar 04 Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 Javascript
原生JavaScript实现贪吃蛇游戏
Nov 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微信开发之查询城市天气
2016/06/23 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
Python如何定义有默认参数的函数
2020/08/10 Python
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
几个MySql的面试题
2013/04/22 面试题
个人简历自我评价八例
2013/10/31 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
跳槽求职信范文
2014/05/26 职场文书
生产助理岗位职责
2014/06/18 职场文书
同学毕业留言寄语
2015/02/27 职场文书
工作年限证明模板
2015/06/15 职场文书
道士塔读书笔记
2015/06/30 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
Python中递归以及递归遍历目录详解
2021/10/24 Python