Network Information API - 提供有关系统网络连接的信息
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
Network Information API(网络信息 API)根据一般连接类型(例如,“wifi”、“蜂窝” 等)提供有关系统网络连接的信息。它可用于根据用户的连接选择高清内容或低清晰度内容。整个 API 包括添加 NetworkInformation
接口和 Navigator
接口的 Navigator.connection
属性。
实例
检测连接变化
此实例监视用户连接的变化。
var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
var type = connection.effectiveType;
function updateConnectionStatus() {
console.log("连接类型由 " + type + " 改为 " + connection.effectiveType);
type = connection.effectiveType;
}
connection.addEventListener('change', updateConnectionStatus);
预加载大资源
连接对象对于决定是否预加载占用大量带宽或内存的资源很有用。此实例将在页面加载后立即调用,以检查可能不需要预加载视频的连接类型。如果找到蜂窝连接,则 preloadVideo
标志设置为 false
。为简单起见,本示例仅测试一种连接类型。实际用例可能会使用 switch 语句或其他一些方法来检查 NetworkInformation.type
的所有可能值。无论 preloadVideo
值是多少,您都可以通过 NetworkInformation.effectiveType
属性来估计连接速度。
let preloadVideo = true;
var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
if (connection) {
if (connection.effectiveType === 'slow-2g') {
preloadVideo = false;
}
}
接口
NetworkInformation
提供有关设备用于与网络通信的连接的信息,并提供一种在连接类型更改时通知脚本的方法。NetworkInformation
接口不能被实例化。它是通过 Navigator
接口访问的。
规范
规范 |
---|
Network Information API |
浏览器兼容性
NetworkInformation
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
downlink | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
downlinkMax | 611 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
effectiveType | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
onchange | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
ontypechange | 不支持 | 不支持 | 不支持 | 不支持 | 未知 | 不支持 |
rtt | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
saveData | 65 | 79 | 不支持 | 不支持 | 支持 | 不支持 |
type | 611 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
在 Worker 中可用 | 61 | 79 | 不支持 | 不支持 | 48 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 50 | 38 | 未知 | 31 | 未知 | 45 | 不支持 |
downlink | 50 | 38 | 未知 | 未知 | 未知 | 45 | 不支持 |
downlinkMax | 50 | 38 | 未知 | 不支持 | 未知 | 45 | 不支持 |
effectiveType | 50 | 38 | 未知 | 支持 | 未知 | 45 | 不支持 |
onchange | 50 | 38 | 未知 | 不支持2 | 未知 | 45 | 不支持 |
ontypechange | 不支持 | 不支持 | 未知 | 未知 | 未知 | 未知 | 不支持 |
rtt | 50 | 38 | 未知 | 不支持 | 未知 | 45 | 不支持 |
saveData | 65 | 65 | 未知 | 未知 | 未知 | 支持 | 不支持 |
type | 50 | 38 | 未知 | 不支持 | 未知 | 45 | 不支持 |
在 Worker 中可用 | 50 | 38 | 未知 | 53 | 未知 | 45 | 不支持 |
1. 仅在 Chrome 操作系统中受支持
2. 在 Firefox 上,与 change
事件对应的事件处理程序属性为 ontypechange
。
Navigator.connection
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 61 | 79 | 支持 | 不支持 | 支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 50 | 38 | 未知 | 141 | 未知 | 37 | 不支持 |
1. 默认情况下,网络 API 已启用。可以使用 dom.netinfo.enabled
首选项禁用。