js(包括vue)如何检测网络状况如离线......


通用方法,Html5在window.navigator对象上添加了一个属性onLine 返回布尔值 true表示在线.同时新增了两个事件:

window.addEventListener('online', function(){
// 网络由异常到正常时触发
});
window.addEventListener('offline', function(){
// 网络由正常常到异常时触发
});

在vue中实现思路如下:

data中初始化在线状态。

data(){
  return{
    onLine: navigator.onLine,
  }
}

mounted中监听事件

mounted(){
  window.addEventListener('online', this.updateOnlineStatus);
  window.addEventListener('offline', this.updateOnlineStatus);
}

 

方法中改变onLine值

methods:{
  updateOnlineStatus(e) {
    const { type } = e;
    this.onLine = type === 'online';
  },
}

  

4.最后 最好在销毁时解除事件监听

beforeDestroy(){
  window.removeEventListener('online', this.updateOnlineStatus);
  window.removeEventListener('offline', this.updateOnlineStatus);
},

作者:黎明破晓的街道
链接:https://juejin.im/post/5bfccaa5e51d452c6061f599
 

另外也可以采用H5的API拓展plusready来实现

http://www.html5plus.org/doc/zh_cn/events.html

<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<title>Events Example</title>
	<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数 
document.addEventListener("plusready", onPlusReady, false);
function onPlusReady(){
	document.addEventListener("netchange", onNetChange, false);  
}
function onNetChange(){
	var nt = plus.networkinfo.getCurrentType();
	switch (nt){
		case plus.networkinfo.CONNECTION_ETHERNET:
		case plus.networkinfo.CONNECTION_WIFI:
		alert("Switch to Wifi networks!"); 
		break; 
		case plus.networkinfo.CONNECTION_CELL2G:
		case plus.networkinfo.CONNECTION_CELL3G:
		case plus.networkinfo.CONNECTION_CELL4G:
		alert("Switch to Cellular networks!");  
		break; 
		default:
		alert("Not networks!"); 
		break;
	}
}
	</script>
	</head>
	<body >
	</body>
</html>

  

摘自:https://blog.csdn.net/weixin_38291260/article/details/89226854

 

https://blog.csdn.net/qq_28773851/article/details/100114824


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM