JS 检测客户端断网情况
常用方法
- 1 navigator.onLine
- 2 window.addEventListener()
- 3 获取网络资源
- 4 ajax请求
1. navigator.onLine
只会在机器未连上路由或者局域网才返回false;也就是连上路由,断网的情况也是返回true
if (navigator.onLine) {
console.log('网络已连接');
} else {
console.log('已断网');
}
2. window.addEventListener()
这个方法会有一个很隐蔽的bug。 电脑有个虚拟机桥接的网卡,就算拔掉网线浏览器也认为你是有网; 此时应该把电脑的以太网vm 禁用掉

window.addEventListener('online', function() {
console.log('网络已连接');
});
window.addEventListener('offline', function() {
console.log('已断网');
});
3 获取网络资源 (利用IMG的onerror事件)
通过轮询生成 IMG 通过 img 的 onerror 事件判断是否断网,此方法弱点就是耗流量(一像素的空gif 轮询一次 1.43KB
setInterval(function(){
var $img = $('<img src="http://jslite.io/blank.gif?'+(new Date())+'">')
$img.appendTo('body').css("display","none").load(function(){
console.log("连接成功!")
$(this).remove()
}).error(function(){
console.log("断网了!")
$(this).remove()
})
},2000)
4 ajax请求轮询
缺点也是耗资源
setInterval(function(){
//Ajax...
},1000)
JS 检测客户端断网情况的更多相关文章
- Python离线断网情况下安装numpy、pandas和matplotlib等常用第三方包
联网情况下在命令终端CMD中输入“pip install numpy”即可自动安装,pandas和matplotlib同理一样方法进行自动安装. 工作的电脑不能上外网,所以不能通过直接输入pip命令来 ...
- struts项目部署在Tomca上在断网情况下启动报错
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6015693.html 前段时间,项目部署到现场后,反馈Tomcat能正常启动,但是项目有时访问不了也不报错. ...
- 【转载】struts应用在断网情况下启动报错解决办法(java/net/AbstractPlainSocketImpl.java:178:-1)
无意间struts应用在有网络的情况下启动正常,在断网的情况下启动报错,报错代码如下图所示: SEVERE: Exception starting filter struts2 Class: java ...
- js 检测客户端网速
<!doctype html> <html> <head> <meta http-equiv=Content-Type content="text/ ...
- js检测客户端是否安装
前言 需求背景:一个web下载页面,需要检测pc是否安装了客户端软件(windows软件).网页上有一个打开客户端按钮.若安装了客户端软件,则直接打开,否则下载软件.支持web下载页面在iframe下 ...
- CentOS 6.5本地yum源、局域网离线yum仓库(断网情况下轻松安装各种依赖包)
在工作中, 公司的服务器大部分都禁止连接外网的,初始化系统,测试某些产品时,往往缺一些软件或依赖包,一个个上传到机器,如此浪费时间,浪费金钱,en...yum能够自动查找并解决rpm包之间的依赖关系, ...
- 心跳机制tcp keepalive的讨论、应用及“断网”、"断电"检测的C代码实现(Windows环境下)
版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权. https://blog.csdn.net/stpeace/article/details/441 ...
- Delphi之TClientSocket和TServerSocket使用tcp keepalive心跳机制实现“断网”、"断电"检测
开发环境:Delphi7 测试环境:WinXP,Win7 32bit,Win7 64bit 使用TClientSocket和TServerSocket实现TCP长连接通讯,经常因为断电断网等原因导致 ...
- h5 网络断网时,返回上一个页面 demo (与检测网络代码相结合,更直观看到结果)
页面一: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8& ...
随机推荐
- javascript 排序
// 插入排序 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列. 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置.(如果待插入的元素与有序 ...
- json 和 pickle
用于序列化的两个模块 json:用于字符串和python数据类型间进行转换 pickle:用于python特有的类型和python的数据类型间进行转换 json模块提供了四个功能:dumps dump ...
- ETL技术( Extract-Transform-Load) 数据仓库技术-比如kettle
每次面试,互联网的面试官,经常问我有没有用过ETL,每次我都懵逼,说没用过,觉得是多么高大上的东东,数据仓储 今天查了一下,我晕,自己天天用的Kettle就是最典型的ETL, 可以实现不同数据库之间的 ...
- HDU4790_Just Random
这个题目我只能说我一看就知道是这么做的,但是由于实现能力略水,Wa了3发. 题意为给你两个区间[a,b]和[c,d],两个区间分别任取一个数,现在要你求出这个数模p的值为m的概率有多大. 其实是这么做 ...
- 迭代器 每迭代一次 指针往下面移动一次 除非JVM回收了内存 否则 他的指针不会回到原地
迭代器 每迭代一次 指针往下面移动一次 除非JVM回收了内存 否则 他的指针不会回到原地
- 【uoj#22】[UR #1]外星人 组合数学+dp
题目描述 给你一个长度为 $n$ 的序列 $\{a_i\}$ 和一个数 $x$ ,对于任意一个 $1\sim n$ 的排列 $\{p_i\}$ ,从 $1$ 到 $n$ 依次执行 $x=x\ \tex ...
- BZOJ4915 简单的数字题
不妨设a1<a2<a3<a4.显然第一问的答案是4,满足a1+a4=a2+a3,a1+a2|a3+a4,a1+a3|a2+a4.容易发现将其同时扩大k倍是仍然满足条件的,于是考虑gc ...
- C++解析(14):静态成员变量与静态成员函数
0.目录 1.静态成员变量 2.静态成员函数 3.小结 1.静态成员变量 成员变量的回顾: 通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 新的需求: ...
- 洛谷U14667 肝活动【比赛】 【状压dp】
题目描述 Yume 最近在玩一个名为<LoveLive! School idol festival>的音乐游戏.他之所以喜欢上这个游戏,是因为这个游戏对非洲人十分友好,即便你脸黑到抽不出好 ...
- 解题:POI 2016 Nim z utrudnieniem
题面 出现了,神仙题! 了解一点博弈论的话可以很容易转化题面:问$B$有多少种取(diu)石子的方式使得取后剩余石子异或值为零且取出的石子堆数是$d$的倍数 首先有个暴力做法:$dp[i][j][k] ...