通过JS判断联网类型和连接状态的实现代码
来源:互联网 发布:中南大学网络教务系统 编辑:程序博客网 时间:2024/05/24 01:50
中国的移动网络环境复杂,为了给用户带去更好访问体验,开发者希望能了解用户当前的联网方式,然后给用户一个符合当前网络环境的请求结果。
W3C的规范中给出了一个方法来获得现在的网络状态navigator.connection;根据Working Draft 29 November 2012协议规范我们可以从接口中获得bandwidth(带宽,M/s)和metered两个参数的值;还提供了一个监听方法,来时刻监听接入环境的变化情况。现实中我们发现很多浏览器并没有返回bandwidth值,而且遵守了Working Draft 07 June 2011的协议返回给我们type(类型,wifi/2g/3g/4g)。
我们接下来就看看各家的支持情况
Android 2.3+ BrowserUCDolphinQQ浏览器BaiduFirefoxChromeOpera MiniMaxthonYesNo*YesYes*YesYes(New)NoNoYes说明下在iPhone中任何浏览器都无法得到相关信息。
通过上面的说明,我们发现还是可以通过这个参数了解很大一部分用户的联网情况的,并且为他们提供更加优质的体验。
接下来我们重点说说各浏览器的返回情况。
大部分浏览器会返回一个int型的类型,其中的特例是QQ浏览器,返回的就是类型名称,对应关系如下
返回值QQ返回值类型0unknownUNKNOWN1ethernetETHERNET2wifiWIFI32gCELL_2G43gCELL_3G54gCELL_4G(中国现在也会出现这个值,是hspa+)?noneNONE接下去是一个更大的特例,这就是firefox,他使用了新版规范,所以返回的是bandwidth;不过很奇怪的是只要是wifi或3G他就返回20,如果是2G返回的就是0.1953125;每次都一样不管现在网络状态到底是多少。这个问题还会继续跟进。
给大家提供一个demo地址:http://demo.jb51.net/js/2015/net.html
Demo中对不支持connection的浏览器直接返回了{type:0},这样就很便利解决了某些浏览器不支持的问题;对于不支持又能上网的浏览器处理为“unknown”当然也是合乎情理的。
很多工程师觉得这个功能支持还不好,还是先不使用的好;但是我觉得只要错误能被处理,风险能被把控,为什么不给那些先天优秀的客户提供更友好的体验呢。
参考文章:
http://www.jb51.net/article/63294.htm
- 通过JS判断联网类型和连接状态的实现代码
- 通过JS判断联网类型和连接状态的实现代码
- 通过select 和状态EINPROGRESS 实现socket 连接超时判断
- 通过input上传图片,判断不同浏览器及图片类型和大小的js代码
- C#通过系统API判断网络连接类型及状态
- 常见的http状态响应码和判断手机网络是否连接以及连接类型
- 通过js来判断浏览器的类型
- 网络连接状态的监听和判断
- 判断浏览器类型的js代码
- 状态数据库中上传文件在js页面端判断上传文件的类型和大小
- 通过JS判断浏览器类型
- 通过JS判断浏览器类型
- android判断是否连接wifi和网络状态的判断
- 判断设备和判断网络连接状态的方法
- 网络判断网络连接有多种办法,通过C#程序也可以判断与远程主机的连接状态。具体实现方法
- 判断联网状态
- 手机联网状态判断
- 判断手机联网状态
- 字符串的读写函数(fgets和fputs)
- Android开发中截取某字符串
- solr-solrj的使用
- activiti5.20简单介绍(五) -- 配置
- 常用正则表达式
- 通过JS判断联网类型和连接状态的实现代码
- 通过反射,将map转换为java对象
- linux下的top命令的各类参数详解
- R语言销售分析计算某商品的连带或连带率指标函数
- HttpClient的使用
- 设计模式-原型模式
- 游戏界面登陆效果优化
- kaggle入门digits Recognizer
- 泛型基本概念