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 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
js文件中调用js的实现方法小结
Oct 23 Javascript
javascript:void(0)使用探讨
Aug 27 Javascript
javascript中使用new与不使用实例化对象的区别
Jun 22 Javascript
JavaScript模块化开发之SeaJS
Dec 13 Javascript
javascript入门之string对象【新手必看】
Nov 22 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
Dec 04 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
Mar 17 Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
Oct 24 Javascript
vue实现简单加法计算器
Oct 22 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跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
php生成动态验证码gif图片
2015/10/19 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
深入理解Javascript中的循环优化
2013/11/09 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
Express的路由详解
2015/12/10 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
Python读写ini文件的方法
2015/05/28 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
python GUI计算器的实现
2020/10/09 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
2014年父亲节活动方案
2014/03/06 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
Python实现简单的猜单词
2021/06/15 Python
Java 多态分析
2022/04/26 Java/Android