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字符串函数扩展代码
Sep 13 Javascript
jquery实现多级下拉菜单的实例代码
Oct 02 Javascript
javascript图片滑动效果实现
Jan 28 Javascript
下一代Bootstrap的5个特点 超酷炫!
Jun 17 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
Jul 22 Javascript
Javascript单例模式的介绍和实例
Oct 08 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
Mar 08 Javascript
JavaScript原型继承_动力节点Java学院整理
Jun 30 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
Jan 27 Javascript
jQuery中使用validate插件校验表单功能
May 24 jQuery
使用p5.js实现动态GIF图片临摹重现
Oct 23 Javascript
JavaScript this关键字指向常用情况解析
Sep 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
PHP-MySQL教程归纳总结
2008/06/07 PHP
php array_slice函数的使用以及参数详解
2008/08/30 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
jquery中radio checked问题
2015/03/16 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
python基础知识小结之集合
2015/11/25 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
20年同学聚会邀请函
2014/02/04 职场文书
给校长的建议书200字
2014/05/16 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
离婚协议书格式
2015/01/26 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
python playwright 自动等待和断言详解
2021/11/27 Python
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android