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 & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
Jun 02 Javascript
javascript仿php的print_r函数输出json数据
Sep 13 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
Jan 09 Javascript
setTimeout内不支持jquery的选择器的解决方案
Apr 28 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
Oct 08 Javascript
学习JavaScript设计模式(策略模式)
Nov 26 Javascript
JavaScript ES5标准中新增的Array方法
Jun 28 Javascript
jQuery Select下拉框操作小结(推荐)
Jul 22 Javascript
vue-cli开发环境实现跨域请求的方法
Apr 07 Javascript
AngularJS与后端php的数据交互方法
Aug 13 Javascript
Vue根据条件添加click事件的方式
Nov 09 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 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
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
python事件驱动event实现详解
2018/11/21 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
Python @property及getter setter原理详解
2020/03/31 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
项目建议书模板
2014/05/12 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
2014年教研组工作总结
2014/11/26 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android
python字符串的一些常见实用操作
2022/04/06 Python
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js