Navigator - 表示用户代理的状态和身份

Navigator 接口表示用户代理的状态和身份。它允许脚本查询并注册,以执行一些操作。

可以使用只读的 window.navigator 属性来获取 Navigator 对象。

属性

不继承任何属性,而是实现了 NavigatorIDNavigatorLanguageNavigatorOnLineNavigatorContentUtilsNavigatorStorageNavigatorStorageUtilsNavigatorConcurrentHardwareNavigatorPluginsNavigatorUserMedia 的属性。

标准

返回一个数组,其中包含当前显示的每个 VRDisplay} 对象(VRDisplay.ispresentingtrue)。

返回当前浏览器的内部 “代码” 名称。不要依赖此属性返回正确的值。

返回一个 DOMString,表示浏览器的正式名称。不要依赖此属性返回正确的值。

返回一个 DOMString,表示浏览器的版本。不要依赖此属性返回正确的值。

返回一个 BatteryManager 对象,您可以使用该对象获取有关电池充电状态的信息。

返回一个 NetworkInformation 对象,其中包含有关设备的网络连接的信息。

如果设置 cookie 会被忽略,则返回 false,否则返回 true

返回一个 Geolocation 对象,允许访问设备的位置。

返回可用逻辑处理器核心的数量。

返回一个 Boolean 标志,指示主机浏览器是否支持 Java。

返回一个 Keyboard 对象,该对象提供对以下功能的访问:检索键盘布局图和切换从物理键盘捕获按键的功能。

返回一个 DOMString,代表用户的首选语言,通常是浏览器 UI 的语言。如果未知,则返回 null 值。

返回一个 DOMString 数组,按优先顺序表示用户已知的语言。

返回一个 LockManager 对象,该对象提供用于请求新的 Lock 对象并查询现有 Lock 对象的方法。

返回一个 MediaCapabilities 对象,该对象可以获取有关给定格式和输出功能的解码和编码功能的信息。

返回当前设备支持的最大同时触摸接触点数。

返回一个 MimeTypeArray,列出浏览器支持的 MIME 类型。

返回一个 Boolean,指示浏览器是否正在在线工作。

返回一个 Permissions 对象,该对象可用于查询和更新权限 API 涵盖的 API 的权限状态。

返回表示浏览器平台的字符串。不要依赖此函数的返回值。

返回一个 PluginArray,列出浏览器中安装的插件。

在任何浏览器上始终返回 'Gecko' 。保留此属性仅出于兼容性目的。

返回一个 ServiceWorkerContainer 对象,该对象为关联文档提供与 ServiceWorker 的注册,删除,升级和通信。

返回一个 StorageManager 单例对象,该对象用于管理持久权限并在逐站点/逐应用的基础上估计可用存储。

返回当前浏览器的用户代理字符串。

指示用户代理是否由自动化控制。

返回 XR 对象,该对象表示 WebXR API 的入口点。

非标准

返回浏览器的构建标识符。在现代浏览器中,出于隐私考虑,此属性现在返回固定的时间戳,例如 Firefox 64 及更高版本为 20181001000000

返回 CredentialsContainer 接口,该接口公开用于请求凭据的方法,并在发生有趣的事件(例如成功登录或注销)时通知用户代理。

返回设备内存量(以千兆字节为单位)。该值是通过四舍五入到最接近的 2 的幂并将该数字除以 1024 得出的近似值。

报告用户的 “不跟踪” 首选项的值。如果此值为 “是”,则您的网站或应用程序不应跟踪用户。

返回对 MediaDevices 对象的引用,然后该引用可用于获取有关可用媒体设备(MediaDevices.enumerateDevices())的信息,找出哪些可约束的属性支持用户计算机和用户代理上的媒体(MediaDevices.getSupportedConstraints()),并使用 MediaDevices.getUserMedia() 请求访问媒体。

Navigator.webkitNotification

返回 notification 对象,您可以使用该对象从 Web 应用程序向用户传递通知。

navigator.mozSocial 属性返回的对象可在社交媒体提供商的面板中使用,以提供可能需要的功能。

返回表示当前操作系统的字符串。

返回对 Presentation API 的引用。

返回当前浏览器的内部版本号(例如 “20060909”)。

返回一个空字符串。在 Netscape 4.7x 中,返回 “US & CA domestic policy”(美国和加拿大国内政策) 或 “Export policy”(出口政策)。

返回一个布尔值,指示浏览器是否以独立模式运行。仅在 Apple 的 iOS Safari 中可用。

返回一个 StorageQuota 接口,该接口提供查询和请求存储使用情况和配额信息的方法。

返回当前浏览器的供应商名称(例如,“Netscape6”)。

返回供应商版本号(例如 “6.1”)。

返回 Mouse Lock APIPointerLock 对象。

方法

不继承任何方法,实现了 NavigatorIDNavigatorContentUtils,_ NavigatorUserMediaNavigatorStorageUtils 的方法。

标准

如果调用 Navigator.share() 将成功,则返回 true

返回一个 promise,解析为 VRDisplay 对象的数组,这些对象表示连接到计算机的任何可用 VR 设备。

在提示用户允许后,返回与本地计算机上的摄像头或麦克风关联的音频或视频流。

允许网站将自身注册为给定 MIME 类型的可能的处理程序。

允许网站将自己注册为给定协议的可能处理程序。

返回一个 Promise,解析为 MediaKeySystemAccess 对象。

用于使用 HTTP 从用户代理异步传输少量数据到 Web 服务器。

调用当前平台的本机共享机制。

返回 false。 JavaScript 1.2 中删除了 JavaScript taint/untaint 功能。

在支持它的设备上引起振动。如果没有振动支持,则不执行任何操作。

非标准

Firefox OS 设备添加了更多非标准方法。您可以在 Firefox OS Navigator 扩展文章 上查询它们。

让代码检查以查看不使用网络的情况下给定 URI 的文档是否可用。

允许应用内付款。

规范

规范 状态 备注
HTML Living Standard
the Navigator object 的定义
现行的标准 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持 支持 支持 支持 支持 支持 支持
activeVRDisplays 不支持115

553

644

不支持 不支持 不支持
authentication67 不支持 不支持 不支持 未知 不支持
battery20 — 29 webkit 不支持

16 — 5056

11 — 16 moz

10 — 16

不支持 不支持 不支持
buildID 不支持 未知

647

2

未知 未知 未知
canShare 不支持 不支持 不支持 不支持 不支持 不支持
clipboard66 未知63 未知 支持 不支持
connection61 未知 未知 不支持 支持 不支持
cookieEnabled591219 支持 支持 支持
credentials5118 支持 未知 支持 未知
deviceMemory63 未知 未知 未知50 未知
doNotTrack2317109119 — 11 ms 12125.1 — 713
geolocation5123.59

16

10.6 — 15

5
getBattery45 不支持43 — 5214 不支持25 不支持
getGamepads

35

21 webkit

1229 不支持

22

15 webkit

不支持
getUserMedia

53

21 webkit 15

1217 moz 16 不支持

18 webkit

12 — 1515

不支持
getVRDisplays 不支持115

553

644

不支持 不支持 不支持
keyboard68 不支持 不支持 不支持55 不支持
locks69 未知 未知 未知56 未知
maxTouchPoints3512

59

29

11

10 ms

支持 不支持
mediaCapabilities66 不支持63 不支持55 不支持
mediaDevices511236 支持 不支持 不支持
mediaSession 不支持 未知 未知 未知 不支持 未知
mozIsLocallyAvailable 不支持 不支持 支持 — 35 不支持 不支持 不支持
oscpu 不支持 不支持 支持18 不支持 不支持 不支持
permissions43 不支持46 不支持 支持 不支持
presentation 支持 未知 不支持 未知 支持 未知
productSub 支持1912 支持 支持20 支持 支持19
registerContentHandler 未知 未知2 — 62 未知 未知 未知
registerProtocolHandler1321 未知3 未知11.6 未知
requestMediaKeySystemAccess42222313 支持242526 未知292227 未知
sendBeacon39291431 不支持263011.1
serviceWorker40

17

16

4431 不支持2711.1
share 不支持 未知 不支持 不支持 不支持12.1
vendor112 支持 支持 支持 支持
vendorSub 支持12 支持 支持15 支持
vibrate32 未知

163435

11 moz

不支持 不支持 不支持
webdriver6312 支持 未知50 支持
xr 不支持 不支持 不支持 不支持 不支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持 支持 未知 支持 未知 支持 支持
activeVRDisplays 支持 支持2 未知55 未知 不支持 不支持
authentication6767 未知 不支持 未知 未知 不支持
battery 不支持 不支持 未知

16 — 5056

14 — 16 moz

10 — 16

未知 不支持 不支持
buildID 不支持 不支持 未知

647

支持

未知 未知 未知
canShare 不支持75 未知 不支持 未知 不支持 不支持
clipboard6666 未知63 未知 支持 不支持
connection5038 未知148 未知37 不支持
cookieEnabled5959 未知49 未知 支持 支持
credentials5151 未知 支持 未知 未知 未知
deviceMemory6363 未知 未知 未知46 未知
doNotTrack 支持 支持 未知911 未知 未知 未知
geolocation 支持 支持 未知4 未知

16

11 — 14

支持
getBattery4545 未知43 — 5214 未知25 不支持
getGamepads

37

支持 webkit

35

25 webkit

未知 不支持 未知

22

14 webkit

不支持
getUserMedia

53

40 webkit 15

53

25 webkit 15

未知24 moz 16 未知12 — 1415 不支持
getVRDisplays 支持 支持2 未知55 未知 不支持 不支持
keyboard 不支持 不支持 未知 不支持 未知 不支持 不支持
locks6969 未知 未知 未知48 未知
maxTouchPoints3735 未知2917 未知 支持 不支持
mediaCapabilities6666 未知63 未知48 不支持
mediaDevices5151 未知36 未知 不支持 不支持
mediaSession 不支持57 未知 未知 未知 不支持 未知
mozIsLocallyAvailable 不支持 不支持 未知 支持 — 35 未知 不支持 不支持
oscpu 不支持 不支持 未知 支持 未知 不支持 不支持
permissions 不支持43 未知46 未知 支持 不支持
presentation 不支持 支持 未知 不支持 未知 支持 未知
productSub 支持 支持19 未知 支持 未知 支持 支持19
registerContentHandler 未知 未知 未知 未知 未知 未知 未知
registerProtocolHandler 不支持 支持 未知4 未知 未知 不支持
requestMediaKeySystemAccess432228422223 未知 支持242526 未知292227 未知
sendBeacon40294229 未知31 未知263011.3
serviceWorker4040 未知44 未知2711.3
share 不支持61 未知 不支持 未知4812.2
vendor 支持 支持 未知 支持 未知 支持 支持
vendorSub 支持 支持 未知 支持 未知14 支持
vibrate4.4.33738323233 未知

163435

14 moz

未知 支持36 不支持
webdriver6363 未知 支持 未知46 支持
xr 不支持 不支持 未知 不支持 未知 不支持 不支持

1. 在所有平台中可通过赔罪标记启用,但当前仅在 Chrome 的实验版本中可在桌面上使用(调用 Navigator.getVRDisplays() 时,其他内部版本不会返回任何设备)。

2. 目前仅受 Google Daydream 支持。

3. 在 Firefox 55 中启用了 Windows 支持。

4. 在 Firefox 64 中启用了 macOS 支持。

5. 因为 navigator.getBattery() 而移除了。

6. 安装了 UPower 的 Android,Windows 和 Linux 支持电池 API。从 Firefox 18 开始提供对 macOS 的支持。

7. 因为隐私原因返回固定的时间戳 - 20181001000000

8. 默认情况下,网络 API 已启用。可以使用 dom.netinfo.enabled 首选项禁用。

9. 在 Firefox 8 之前,如果在执行检查的页面上存在网站异常,navigator.cookieEnabled 将报告错误结果。此问题已解决。

10. 在版本 17 之前的 Edge 中实现了 window.doNotTrack

11. 在 Firefox 32 之前,navigator.doNotTrack 将报告 yesno 值,而不是 10

12. 对于 IE11 及更高版本,请使用 window.doNotTrack

13. Safari 7.1.3 + 使用 window.doNotTrack 而不是 navigator.doNotTrack

14. 从 Firefox 52 开始,电池状态 API 仅在 chrome 或特权代码中可用。

15. 过时的约束语法仍在使用中,但此处描述的语法可通过 adapter.js polyfill 获得。

16. 从 Firefox 38 开始,可以使用此处描述的约束语法。早期版本(32-37)使用了过时的约束语法,但是可以通过 adapter.js polyfill 在此处使用此处描述的语法。

17. 参阅 bug 1426786.

18. 首选项 "general.oscpu.override" 可用于设置要返回的值,而不是真实的 CPU 描述。对于特权代码进行的调用,将忽略首选项设置,这些调用将继续获取实际的 CPU 描述。

19. 始终返回 20030107

20. 始终返回 undefined.

21. 协议白名单包括 mailtommsnntprtspwebcal。自定义协议必须以 web+ 为前缀。

22. 规范要求所传递的 supportedConfigurations 选项包含 audioCapabilitiesvideoCapabilities 中的至少一个,并且所述参数包括编解码器字符串。

23. 该函数在不安全的上下文中不存在。直到 Chrome 58 才强制实施。

24. 从 Firefox 55 开始,如果在 supportedConfigurations 中未指定 audioCapabilitiesvideoCapabilities,则将警告输出到 Web 控制台。

25. 另外,从 Firefox 55 开始,如果在 supportedConfigurations 中,audioCapabilitiesvideoCapabilities 的 contentType 值未指定 "codecs" 子字符串来定义媒体包装中允许的编解码器,则会向 Web 控制台输出警告。有关示例和更正,请参见下表中的注释。

26. 将来,如果在 supportedConfigurations 中未指定 audioCapabilitiesvideoCapabilities,则将引发 NotSupported 异常。

27. 该函数在不安全的上下文中不存在。直到 Opera 45 才强制执行。

28. 该函数在不安全的上下文中不存在。直到版本 58 才强制实施。

29. 从 Chrome 59 开始,此方法无法发送其类型不在 CORS 安全列表中的 Blob。这是一个临时更改,直到可以缓解由此造成的安全问题。有关更多信息,请参阅 Chrome bug 720283

30. 从 Opera 46 开始,此方法无法发送其类型不在 CORS 安全列表中的 Blob。这是一个临时更改,直到可以缓解由此造成的安全问题。有关更多信息,请参阅 Chrome bug 720283

31. 在 Firefox 45 和 52 扩展支持版本(ESR)中,服务工作者(和 Push)已被禁用。

32. 从 Chrome 55 开始,跨域 iframe 不支持此功能。

33. 从 Chrome 60 开始,此方法需要用户手势触发。否则,它返回 false

34. 在包括 Firefox 26 之前,当振动模式过长或任何元素过大时,Firefox 都会引发异常,而不是返回 false(错误 bug 884935)。

35. 从 Firefox 32 开始,当振动模式过长或任何元素过大时,它将返回 true,但会截断该模式(bug 1014581)。

36. 从 Opera 47 开始,此方法需要用户手势触发。否则,它返回 false

37. 从版本 55 开始,跨域 iframe 不支持此功能。

38. 从版本 60 开始,此方法需要用户手势触发。否则,它返回 false