js监听input值变化_前端js监听浏览器网络变化

首先,为什么要让前端判断用户的网络状态呢——为了更好的用户体验。

其次,前端能否判断网络状态?有哪些方法?

首个 Vue 3 组件库发布​mp.weixin.qq.com
  1. 可以做到渐进式判断,不能做到绝对准确。
  2. 使用的是navigator.onLine或navigator.connection.rtt

根据我实际测试所得,

navigator.onLine 无法及时获取真实网络状态,比如手动把网线,使用定时器获取navigator.onLine,始终是true,过很久才变成false(差不多相当于一个ajax的timeout时间)

navigator.connection 可以实时监听到网络变化(延迟2-5秒),但是获取到的网络是一个模糊值 比如navigator.connection.rtt 是请求预估延迟xx ms,有时候是0毫秒的延迟,却恰恰是已经断网了。

所以我做了一下判断:

const netWorkDownlink = navigator.connection.downlink; // 预估下载速度m/s

if (navigator.connection && navigator.connection.onchange === null) {
    navigator.connection.onchange=() => {
      if (netWorkDownlink !== navigator.connection.downlink || navigator.connection.rtt === 0) {
         //网络断开
      } else if (netWorkDownlink === navigator.connection.downlink || navigator.connection.rtt !== 0) {
         //连接到网络
      }
   }
}
const netWorkDownlink = navigator.connection.downlink; // 预估下载速度m/s if (navigator.connection && navigator.connection.onchange === null) { navigator.connection.onchange=() => { if (netWorkDownlink !== navigator.connection.downlink || navigator.connection.rtt === 0) { //网络断开 } else if (netWorkDownlink === navigator.connection.downlink || navigator.connection.rtt !== 0) { //连接到网络 } } }

虽然不太准确,但是目前测试没发现bug,

如果测试出了缺陷或者有更好的方法,欢迎评论。

Vue和React的区别,你在用哪个呢?​mp.weixin.qq.com 首先,为什么要让前端判断用户的网络状态呢——为了更好的用户体验。 其次,前端能否判断网络状态?有哪些方法? 首个 Vue 3 组件库发布mp.weixin.qq.com 可以做到渐进式判断,不能做到绝对准确。 使用的是navigator.onLine或navigator.connection.rtt 根据我实际测试所得, navigator.onLine 无法及时获取真实网络状态,比如手动把网线,使用定时器获取navigator.onLine,始终是true,过很久才变成false(差不多相当于一个ajax的timeout时间) navigator.connection 可以实时监听到网络变化(延迟2-5秒),但是获取到的网络是一个模糊值 比如navigator.connection.rtt 是请求预估延迟xx ms,有时候是0毫秒的延迟,却恰恰是已经断网了。 所以我做了一下判断: const netWorkDownlink = navigator.connection.downlink; // 预估下载速度m/s if (navigator.connection && navigator.connection.onchange === null) { navigator.connection.onchange=() => { if (netWorkDownlink !== navigator.connection.downlink || navigator.connection.rtt === 0) { //网络断开 } else if (netWorkDownlink === navigator.connection.downlink || navigator.connection.rtt !== 0) { //连接到网络 } } } 虽然不太准确,但是目前测试没发现bug, 如果测试出了缺陷或者有更好的方法,欢迎评论。 Vue和React的区别,你在用哪个呢?mp.weixin.qq.com
经验分享 程序员 微信小程序 职场和发展