@@ -106,7 +106,7 @@ Geolocation 对象提供下面三个方法。
106106
107107### Navigator.cookieEnabled
108108
109- ` Navigator .cookieEnabled` 属性返回一个布尔值,表示浏览器的 Cookie 功能是否打开。
109+ ` navigator .cookieEnabled` 属性返回一个布尔值,表示浏览器的 Cookie 功能是否打开。
110110
111111``` javascript
112112navigator .cookieEnabled // true
@@ -118,7 +118,7 @@ navigator.cookieEnabled // true
118118
119119### Navigator.javaEnabled()
120120
121- ` Navigator .javaEnabled()` 方法返回一个布尔值,表示浏览器是否能运行 Java Applet 小程序。
121+ ` navigator .javaEnabled()` 方法返回一个布尔值,表示浏览器是否能运行 Java Applet 小程序。
122122
123123``` javascript
124124navigator .javaEnabled () // false
@@ -128,6 +128,73 @@ navigator.javaEnabled() // false
128128
129129` Navigator.sendBeacon() ` 方法用于向服务器异步发送数据,详见《XMLHttpRequest 对象》一章。
130130
131+ ## Navigator 的实验性属性
132+
133+ Navigator 对象有一些实验性属性,在部分浏览器可用。
134+
135+ ### Navigator.deviceMemory
136+
137+ ` navigator.deviceMemory ` 属性返回当前计算机的内存数量(单位为 GB)。该属性只读,只在 HTTPS 环境下可用。
138+
139+ 它的返回值是一个近似值,四舍五入到最接近的2的幂,通常是 0.25、0.5、1、2、4、8。实际内存超过 8GB,也返回` 8 ` 。
140+
141+ ``` javascript
142+ if (navigator .deviceMemory > 1 ) {
143+ await import (' ./costly-module.js' );
144+ }
145+ ```
146+
147+ 上面示例中,只有当前内存大于 1GB,才加载大型的脚本。
148+
149+ ### Navigator.hardwareConcurrency
150+
151+ ` navigator.hardwareConcurrency ` 属性返回用户计算机上可用的逻辑处理器的数量。该属性只读。
152+
153+ 现代计算机的 CPU 有多个物理核心,每个物理核心有时支持一次运行多个线程。因此,四核 CPU 可以提供八个逻辑处理器核心。
154+
155+ ``` javascript
156+ if (navigator .hardwareConcurrency > 4 ) {
157+ await import (' ./costly-module.js' );
158+ }
159+ ```
160+
161+ 上面示例中,可用的逻辑处理器大于4,才会加载大型脚本。
162+
163+ 该属性通过用于创建 Web Worker,每个可用的逻辑处理器都创建一个 Worker。
164+
165+ ``` javascript
166+ let workerList = [];
167+
168+ for (let i = 0 ; i < window .navigator .hardwareConcurrency ; i++ ) {
169+ let newWorker = {
170+ worker: new Worker (' cpuworker.js' ),
171+ inUse: false
172+ };
173+ workerList .push (newWorker);
174+ }
175+ ```
176+
177+ 上面示例中,有多少个可用的逻辑处理器,就创建多少个 Web Worker。
178+
179+ ### Navigator.connection
180+
181+ ` navigator.connection ` 属性返回一个对象,包含当前网络连接的相关信息。
182+
183+ - downlink:有效带宽估计值(单位:兆比特/秒,Mbps),四舍五入到每秒 25KB 的最接近倍数。
184+ - downlinkMax:当前连接的最大下行链路速度(单位:兆比特每秒,Mbps)。
185+ - effectiveType:返回连接的等效类型,可能的值为` slow-2g ` 、` 2g ` 、` 3g ` 、` 4g ` 。
186+ - rtt:当前连接的估计有效往返时间,四舍五入到最接近的25毫秒的倍数。
187+ - saveData:用户是否设置了浏览器的减少数据使用量选项(比如不加载图片),返回` true ` 或者` false ` 。
188+ - type:当前连接的介质类型,可能的值为` bluetooth ` 、` cellular ` 、` ethernet ` 、` none ` 、` wifi ` 、` wimax ` 、` other ` 、` unknown ` 。
189+
190+ ``` javascript
191+ if (navigator .connection .effectiveType === ' 4g' ) {
192+ await import (' ./costly-module.js' );
193+ }
194+ ```
195+
196+ 上面示例中,如果网络连接是 4G,则加载大型脚本。
197+
131198## Screen 对象
132199
133200Screen 对象表示当前窗口所在的屏幕,提供显示设备的信息。` window.screen ` 属性指向这个对象。
@@ -166,3 +233,4 @@ if ((screen.width <= 800) && (screen.height <= 600)) {
166233 window .location .replace (' wide.html' );
167234}
168235```
236+
0 commit comments