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中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
javascript获取四位数字或者字母的随机数
Jan 09 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 Javascript
简单分析javascript面向对象与原型
May 21 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
Dec 31 Javascript
Javascript blur与click冲突解决办法
Jan 09 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
Mar 07 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
JavaScript实现简单轮播图效果
Dec 01 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
May 31 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 Javascript
如何理解Vue前后端数据交互与显示
May 10 Vue.js
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
浅析SVN常见问题及解决方法
2013/06/21 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
原生JS实现留言板
2020/03/26 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
深入Python函数编程的一些特性
2015/04/13 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
详解Django中异步任务之django-celery
2020/11/05 Python
戴尔英国官网:Dell英国
2017/05/27 全球购物
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
公关关系专员的自我评价分享
2013/11/20 职场文书
总裁助理岗位职责
2014/02/17 职场文书
项目安全员岗位职责
2015/02/15 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
Redis+AOP+自定义注解实现限流
2022/06/28 Redis