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新窗口与子窗口传值详解
Feb 11 Javascript
JQuery异步加载无限下拉框级联功能实现示例
Feb 19 Javascript
jQuery/CSS3图片特效插件整理推荐
Dec 07 Javascript
JS获取iframe中longdesc属性的方法
Apr 01 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
理解javascript异步编程
Jan 27 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 Javascript
javascript防抖函数debounce详解
Jun 11 Javascript
JavaScript多种图形实现代码实例
Jun 28 Javascript
vue-router 按需加载 component: () => import() 报错的解决
Sep 22 Javascript
Element实现动态表格的示例代码
Aug 02 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
thinkphp分页集成实例
2017/07/24 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
微信小程序 生命周期函数详解
2017/05/24 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
Python中的jquery PyQuery库使用小结
2014/05/13 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
幼儿教师国培感言
2014/02/19 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
党员自我对照检查材料
2014/08/19 职场文书
医生见习报告范文
2014/11/03 职场文书
匿名信格式范文
2015/05/27 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
logback如何自定义日志存储
2021/08/30 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android