@@ -106,7 +106,7 @@ Geolocation 对象提供下面三个方法。
106
106
107
107
### Navigator.cookieEnabled
108
108
109
- ` Navigator .cookieEnabled` 属性返回一个布尔值,表示浏览器的 Cookie 功能是否打开。
109
+ ` navigator .cookieEnabled` 属性返回一个布尔值,表示浏览器的 Cookie 功能是否打开。
110
110
111
111
``` javascript
112
112
navigator .cookieEnabled // true
@@ -118,7 +118,7 @@ navigator.cookieEnabled // true
118
118
119
119
### Navigator.javaEnabled()
120
120
121
- ` Navigator .javaEnabled()` 方法返回一个布尔值,表示浏览器是否能运行 Java Applet 小程序。
121
+ ` navigator .javaEnabled()` 方法返回一个布尔值,表示浏览器是否能运行 Java Applet 小程序。
122
122
123
123
``` javascript
124
124
navigator .javaEnabled () // false
@@ -128,6 +128,73 @@ navigator.javaEnabled() // false
128
128
129
129
` Navigator.sendBeacon() ` 方法用于向服务器异步发送数据,详见《XMLHttpRequest 对象》一章。
130
130
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
+
131
198
## Screen 对象
132
199
133
200
Screen 对象表示当前窗口所在的屏幕,提供显示设备的信息。` window.screen ` 属性指向这个对象。
@@ -166,3 +233,4 @@ if ((screen.width <= 800) && (screen.height <= 600)) {
166
233
window .location .replace (' wide.html' );
167
234
}
168
235
```
236
+
0 commit comments