JavaScript实现获取设备网络连接信息

 更新时间:2023年05月25日 09:36:59   作者:JetTsang  
作为前端开发,做好用户体验是很重要的,日常开发中我们经常可以遇到用户网速慢导致静态资源加载慢,从而给影响用户体验,所以本文来和大家分享一个有趣的API,可以实现获取网络信息

前言

作为前端开发,做好用户体验是很重要的,日常开发中我们经常可以遇到用户网速慢导致静态资源加载慢,从而给影响用户体验。这里有一种优化思路,我们可以通过JS来获取网络信息,比方说使用的是WI-FI还是蜂窝,下载速度大致是多少呀?来达到优化的目的,下面介绍这样一个API

介绍

Navigator.connection是一个只读的对象,它会提供一个一个 NetworkInformation 对象来获取设备的网络连接信息。例如用户设备的当前带宽或连接是否被计量,这可以用于基于用户的连接来选择高清晰度内容或低清晰度内容。

使用方法

const connectionInfo:NetworkInformation = navigator.connection

NetworkInformation定义

type NetworkInformation = {
    readonly downlink:number  // Mbps
    readonly effectiveType: EffectiveConnectionType
    onchange: EventHandler
    readonly rtt:number // round trip time --> ms
}
// 每一个定义的枚举类型都有对应的参数范围的要求
enum EffectiveConnectionType {
  "2g",
  "3g",
  "4g",
  "slow-2g"
};

How to use

// Get the connection type. 
var type = navigator.connection.type; 
// Get an upper bound on the downlink speed of the first network hop
var downlink = navigator.connection.downlink; 
function changeHandler(e) { 
// Handle change to connection here. 
} 
// Register for event changes. 
navigator.connection.onchange = changeHandler;
// Alternatively. 
navigator.connection.addEventListener('change', changeHandler);

这是一个实验性的API,它的适用范围:

在项目中使用

Vue

// 在组件挂载完毕
onMounted(() => {
    const effectiveType = navigator.connection.effectiveType
    switch (effectiveType) {
        case '4g':
            // 加载高质量资源
            this.imgSrc = higherSrc
            break;
        case '3g':
            // 加载稍低质量资源
            this.imgSrc = lowerSrc
            break;
        case '2g':
            // ...
            break;
        default:
            //...
            break;
    }
})

React

// 在组件挂载完毕后,只需执行一次
useEffect(()=>{
    const effectiveType = navigator.connection.effectiveType
    switch (effectiveType) {
        case '4g':
            // 加载高质量资源
            setImgsrc(higherSrc)
            break;
        case '3g':
            // 加载稍低质量资源
            setImgsrc(lowerSrc)
            break;
        case '2g':
            // ...
            break;
        default:
            //...
            break;
    }
},[])

总结

这个API可以根据用户的网速,来加载对应质量的资源,从而为用户带来更好的体验,需要注意的是,这是一个实验性质的API,支持的浏览器版本有限,使用的时候可以作为渐进增强来提高用户体验。

参考资料

Navigator.connection

Network Information API

以上就是JavaScript实现获取设备网络连接信息的详细内容,更多关于JavaScript获取网络信息的资料请关注脚本之家其它相关文章

相关文章

  • echarts柱状图背景重叠组合而非并列的实现代码

    echarts柱状图背景重叠组合而非并列的实现代码

    这篇文章主要给大家介绍了关于echarts柱状图背景重叠组合而非并列的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 如何通过JavaScript来实现页面间数据传递

    如何通过JavaScript来实现页面间数据传递

    这篇文章主要给大家介绍了关于如何通过JavaScript来实现页面间数据传递的相关资料,在前端开发中我们常常需要从一个跳到另一个页面,并且将当前页面的数据传递过去,需要的朋友可以参考下
    2023-11-11
  • Bootstrap表格和栅格分页实例详解

    Bootstrap表格和栅格分页实例详解

    这篇文章主要介绍了Bootstrap表格和栅格分页的相关资料,具有参考借鉴价值,特此分享到脚本之家平台供大家参考,需要的朋友可以参考下
    2016-05-05
  • js HTML5 Ajax实现文件上传进度条功能

    js HTML5 Ajax实现文件上传进度条功能

    这篇文章主要介绍了javascript实现文件上传进度条功能的相关资料啊,感兴趣的朋友可以参考一下
    2016-02-02
  • 详解JavaScript的数据类型以及数据类型的转换

    详解JavaScript的数据类型以及数据类型的转换

    这篇文章主要介绍了JavaScript的数据类型以及数据类型的转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • JS判断字符串是否为整数的方法--简单的正则判断

    JS判断字符串是否为整数的方法--简单的正则判断

    今天小编就为大家分享一篇JS判断字符串是否为整数的方法--简单的正则判断,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • js 如何实现对数据库的增删改查

    js 如何实现对数据库的增删改查

    JavaScript操作数据库JS操作Access数据库,跟其他语言操作差不多,总结了一下习惯代码,需要的朋友可以参考下
    2012-11-11
  • js+css3实现简单时钟特效

    js+css3实现简单时钟特效

    这篇文章主要为大家详细介绍了js+css3实现简单时钟特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • js字符串完全替换函数分享

    js字符串完全替换函数分享

    用JS替换字符串时。只能替换掉字符串中第一个匹配对象,有时候需要替换全部的字符,下文是具体的实现方法,大家可以参考下
    2014-12-12
  • js 删除数组的几种方法小结

    js 删除数组的几种方法小结

    本篇文章主要是对js中删除数组的几种方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02

最新评论