Navigator - 表示用户代理的状态和身份
Navigator
接口表示用户代理的状态和身份。它允许脚本查询并注册,以执行一些操作。
可以使用只读的 window.navigator
属性来获取 Navigator
对象。
属性
不继承任何属性,而是实现了 NavigatorID
,NavigatorLanguage
,NavigatorOnLine
,NavigatorContentUtils
,NavigatorStorage
,NavigatorStorageUtils
,NavigatorConcurrentHardware
,NavigatorPlugins
和 NavigatorUserMedia
的属性。
标准
Navigator.activeVRDisplays
只读
返回一个数组,其中包含当前显示的每个 VRDisplay
} 对象(VRDisplay.ispresenting
为 true
)。
NavigatorID.appCodeName
只读
返回当前浏览器的内部 “代码” 名称。不要依赖此属性返回正确的值。
NavigatorID.appName
只读
返回一个 DOMString
,表示浏览器的正式名称。不要依赖此属性返回正确的值。
NavigatorID.appVersion
只读
返回一个 DOMString
,表示浏览器的版本。不要依赖此属性返回正确的值。
Navigator.battery
只读
返回一个 BatteryManager
对象,您可以使用该对象获取有关电池充电状态的信息。
Navigator.connection
只读
返回一个 NetworkInformation
对象,其中包含有关设备的网络连接的信息。
Navigator.cookieEnabled
只读
如果设置 cookie 会被忽略,则返回 false
,否则返回 true
。
Navigator.geolocation
只读
返回一个 Geolocation
对象,允许访问设备的位置。
NavigatorConcurrentHardware.hardwareConcurrency
只读
返回可用逻辑处理器核心的数量。
NavigatorPlugins.javaEnabled
只读
返回一个 Boolean
标志,指示主机浏览器是否支持 Java。
Navigator.keyboard
只读
返回一个 Keyboard
对象,该对象提供对以下功能的访问:检索键盘布局图和切换从物理键盘捕获按键的功能。
NavigatorLanguage.language
只读
返回一个 DOMString
,代表用户的首选语言,通常是浏览器 UI 的语言。如果未知,则返回 null
值。
NavigatorLanguage.languages
只读
返回一个 DOMString
数组,按优先顺序表示用户已知的语言。
Navigator.locks
只读
返回一个 LockManager
对象,该对象提供用于请求新的 Lock
对象并查询现有 Lock
对象的方法。
Navigator.mediaCapabilities
只读
返回一个 MediaCapabilities
对象,该对象可以获取有关给定格式和输出功能的解码和编码功能的信息。
Navigator.maxTouchPoints
只读
返回当前设备支持的最大同时触摸接触点数。
NavigatorPlugins.mimeTypes
只读
返回一个 MimeTypeArray
,列出浏览器支持的 MIME 类型。
NavigatorOnLine.onLine
只读
返回一个 Boolean
,指示浏览器是否正在在线工作。
Navigator.permissions
只读
返回一个 Permissions
对象,该对象可用于查询和更新权限 API 涵盖的 API 的权限状态。
NavigatorID.platform
只读
返回表示浏览器平台的字符串。不要依赖此函数的返回值。
NavigatorPlugins.plugins
只读
返回一个 PluginArray
,列出浏览器中安装的插件。
NavigatorID.product
只读
在任何浏览器上始终返回 'Gecko'
。保留此属性仅出于兼容性目的。
Navigator.serviceWorker
只读
返回一个 ServiceWorkerContainer
对象,该对象为关联文档提供与 ServiceWorker
的注册,删除,升级和通信。
NavigatorStorage.storage
只读
返回一个 StorageManager
单例对象,该对象用于管理持久权限并在逐站点/逐应用的基础上估计可用存储。
NavigatorID.userAgent
只读
返回当前浏览器的用户代理字符串。
Navigator.webdriver
只读
指示用户代理是否由自动化控制。
Navigator.xr
只读
返回 XR
对象,该对象表示 WebXR API 的入口点。
非标准
Navigator.buildID
返回浏览器的构建标识符。在现代浏览器中,出于隐私考虑,此属性现在返回固定的时间戳,例如 Firefox 64 及更高版本为 20181001000000
。
Navigator.credentials
返回 CredentialsContainer
接口,该接口公开用于请求凭据的方法,并在发生有趣的事件(例如成功登录或注销)时通知用户代理。
Navigator.deviceMemory
只读
返回设备内存量(以千兆字节为单位)。该值是通过四舍五入到最接近的 2 的幂并将该数字除以 1024 得出的近似值。
Navigator.doNotTrack
报告用户的 “不跟踪” 首选项的值。如果此值为 “是”,则您的网站或应用程序不应跟踪用户。
Navigator.mediaDevices
返回对 MediaDevices
对象的引用,然后该引用可用于获取有关可用媒体设备(MediaDevices.enumerateDevices()
)的信息,找出哪些可约束的属性支持用户计算机和用户代理上的媒体(MediaDevices.getSupportedConstraints()
),并使用 MediaDevices.getUserMedia()
请求访问媒体。
Navigator.mozNotification
已废弃 Gecko 22
返回 notification
对象,您可以使用该对象从 Web 应用程序向用户传递通知。
Navigator.mozSocial
由 navigator.mozSocial
属性返回的对象可在社交媒体提供商的面板中使用,以提供可能需要的功能。
Navigator.oscpu
返回表示当前操作系统的字符串。
Navigator.presentation
返回对 Presentation
API 的引用。
Navigator.productSub
返回当前浏览器的内部版本号(例如 “20060909”)。
Navigator.securitypolicy
返回一个空字符串。在 Netscape 4.7x 中,返回 “US & CA domestic policy”(美国和加拿大国内政策) 或 “Export policy”(出口政策)。
Navigator.standalone
返回一个布尔值,指示浏览器是否以独立模式运行。仅在 Apple 的 iOS Safari 中可用。
Navigator.storageQuota
只读
返回一个 StorageQuota
接口,该接口提供查询和请求存储使用情况和配额信息的方法。
Navigator.vendor
返回当前浏览器的供应商名称(例如,“Netscape6”)。
Navigator.vendorSub
返回供应商版本号(例如 “6.1”)。
Navigator.webkitPointer
返回 Mouse Lock API 的 PointerLock
对象。
方法
不继承任何方法,实现了 NavigatorID
,NavigatorContentUtils
,_ NavigatorUserMedia
和 NavigatorStorageUtils
的方法。
标准
Navigator.canShare()
如果调用 Navigator.share()
将成功,则返回 true
。
Navigator.getVRDisplays()
返回一个 promise,解析为 VRDisplay
对象的数组,这些对象表示连接到计算机的任何可用 VR 设备。
Navigator.getUserMedia()
在提示用户允许后,返回与本地计算机上的摄像头或麦克风关联的音频或视频流。
Navigator.registerContentHandler()
已过时 Gecko 59
允许网站将自身注册为给定 MIME 类型的可能的处理程序。
Navigator.registerProtocolHandler()
允许网站将自己注册为给定协议的可能处理程序。
Navigator.requestMediaKeySystemAccess()
返回一个 Promise
,解析为 MediaKeySystemAccess
对象。
Navigator.sendBeacon()
用于使用 HTTP 从用户代理异步传输少量数据到 Web 服务器。
Navigator.share()
调用当前平台的本机共享机制。
NavigatorID.taintEnabled()
已废弃 Gecko 1.7.8 已过时 Gecko 9.0
返回 false
。 JavaScript 1.2 中删除了 JavaScript taint/untaint 功能。
Navigator.vibrate()
在支持它的设备上引起振动。如果没有振动支持,则不执行任何操作。
非标准
Firefox OS 设备添加了更多非标准方法。您可以在 Firefox OS Navigator 扩展文章 上查询它们。
Navigator.mozIsLocallyAvailable()
让代码检查以查看不使用网络的情况下给定 URI 的文档是否可用。
Navigator.mozPay()
允许应用内付款。
规范
规范 | 状态 | 备注 |
---|---|---|
HTML Living Standard the Navigator object 的定义 |
现行的标准 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
activeVRDisplays | 不支持1 | 15 | 553 644 | 不支持 | 不支持 | 不支持 |
authentication | 67 | 不支持 | 不支持 | 不支持 | 未知 | 不支持 |
battery | 20 — 29 webkit | 不支持 | 11 — 16 moz 10 — 16 | 不支持 | 不支持 | 不支持 |
buildID | 不支持 | 未知 | 647 2 | 未知 | 未知 | 未知 |
canShare | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
clipboard | 66 | 未知 | 63 | 未知 | 支持 | 不支持 |
connection | 61 | 未知 | 未知 | 不支持 | 支持 | 不支持 |
cookieEnabled | 59 | 12 | 19 | 支持 | 支持 | 支持 |
credentials | 51 | 18 | 支持 | 未知 | 支持 | 未知 |
deviceMemory | 63 | 未知 | 未知 | 未知 | 50 | 未知 |
doNotTrack | 23 | 1710 | 911 | 9 — 11 ms 12 | 12 | 5.1 — 713 |
geolocation | 5 | 12 | 3.5 | 9 | 16 10.6 — 15 | 5 |
getBattery | 45 | 不支持 | 43 — 5214 | 不支持 | 25 | 不支持 |
getGamepads | 35 21 webkit | 12 | 29 | 不支持 | 22 15 webkit | 不支持 |
getUserMedia | 53 | 12 | 17 moz 16 | 不支持 | 18 webkit 12 — 1515 | 不支持 |
getVRDisplays | 不支持1 | 15 | 553 644 | 不支持 | 不支持 | 不支持 |
keyboard | 68 | 不支持 | 不支持 | 不支持 | 55 | 不支持 |
locks | 69 | 未知 | 未知 | 未知 | 56 | 未知 |
maxTouchPoints | 35 | 12 | 59 29 | 11 10 ms | 支持 | 不支持 |
mediaCapabilities | 66 | 不支持 | 63 | 不支持 | 55 | 不支持 |
mediaDevices | 51 | 12 | 36 | 支持 | 不支持 | 不支持 |
mediaSession | 不支持 | 未知 | 未知 | 未知 | 不支持 | 未知 |
mozIsLocallyAvailable | 不支持 | 不支持 | 支持 — 35 | 不支持 | 不支持 | 不支持 |
oscpu | 不支持 | 不支持 | 支持18 | 不支持 | 不支持 | 不支持 |
permissions | 43 | 不支持 | 46 | 不支持 | 支持 | 不支持 |
presentation | 支持 | 未知 | 不支持 | 未知 | 支持 | 未知 |
productSub | 支持19 | 12 | 支持 | 支持20 | 支持 | 支持19 |
registerContentHandler | 未知 | 未知 | 2 — 62 | 未知 | 未知 | 未知 |
registerProtocolHandler | 1321 | 未知 | 3 | 未知 | 11.6 | 未知 |
requestMediaKeySystemAccess | 422223 | 13 | 支持242526 | 未知 | 292227 | 未知 |
sendBeacon | 3929 | 14 | 31 | 不支持 | 2630 | 11.1 |
serviceWorker | 40 | 17 16 | 4431 | 不支持 | 27 | 11.1 |
share | 不支持 | 未知 | 不支持 | 不支持 | 不支持 | 12.1 |
vendor | 1 | 12 | 支持 | 支持 | 支持 | 支持 |
vendorSub | 支持 | 12 | 支持 | 支持 | 15 | 支持 |
vibrate | 32 | 未知 | 11 moz | 不支持 | 不支持 | 不支持 |
webdriver | 63 | 12 | 支持 | 未知 | 50 | 支持 |
xr | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
activeVRDisplays | 支持 | 支持2 | 未知 | 55 | 未知 | 不支持 | 不支持 |
authentication | 67 | 67 | 未知 | 不支持 | 未知 | 未知 | 不支持 |
battery | 不支持 | 不支持 | 未知 | 14 — 16 moz 10 — 16 | 未知 | 不支持 | 不支持 |
buildID | 不支持 | 不支持 | 未知 | 647 支持 | 未知 | 未知 | 未知 |
canShare | 不支持 | 75 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
clipboard | 66 | 66 | 未知 | 63 | 未知 | 支持 | 不支持 |
connection | 50 | 38 | 未知 | 148 | 未知 | 37 | 不支持 |
cookieEnabled | 59 | 59 | 未知 | 49 | 未知 | 支持 | 支持 |
credentials | 51 | 51 | 未知 | 支持 | 未知 | 未知 | 未知 |
deviceMemory | 63 | 63 | 未知 | 未知 | 未知 | 46 | 未知 |
doNotTrack | 支持 | 支持 | 未知 | 911 | 未知 | 未知 | 未知 |
geolocation | 支持 | 支持 | 未知 | 4 | 未知 | 16 11 — 14 | 支持 |
getBattery | 45 | 45 | 未知 | 43 — 5214 | 未知 | 25 | 不支持 |
getGamepads | 37 支持 webkit | 35 25 webkit | 未知 | 不支持 | 未知 | 22 14 webkit | 不支持 |
getUserMedia | 53 | 53 | 未知 | 24 moz 16 | 未知 | 12 — 1415 | 不支持 |
getVRDisplays | 支持 | 支持2 | 未知 | 55 | 未知 | 不支持 | 不支持 |
keyboard | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
locks | 69 | 69 | 未知 | 未知 | 未知 | 48 | 未知 |
maxTouchPoints | 37 | 35 | 未知 | 2917 | 未知 | 支持 | 不支持 |
mediaCapabilities | 66 | 66 | 未知 | 63 | 未知 | 48 | 不支持 |
mediaDevices | 51 | 51 | 未知 | 36 | 未知 | 不支持 | 不支持 |
mediaSession | 不支持 | 57 | 未知 | 未知 | 未知 | 不支持 | 未知 |
mozIsLocallyAvailable | 不支持 | 不支持 | 未知 | 支持 — 35 | 未知 | 不支持 | 不支持 |
oscpu | 不支持 | 不支持 | 未知 | 支持 | 未知 | 不支持 | 不支持 |
permissions | 不支持 | 43 | 未知 | 46 | 未知 | 支持 | 不支持 |
presentation | 不支持 | 支持 | 未知 | 不支持 | 未知 | 支持 | 未知 |
productSub | 支持 | 支持19 | 未知 | 支持 | 未知 | 支持 | 支持19 |
registerContentHandler | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
registerProtocolHandler | 不支持 | 支持 | 未知 | 4 | 未知 | 未知 | 不支持 |
requestMediaKeySystemAccess | 432228 | 422223 | 未知 | 支持242526 | 未知 | 292227 | 未知 |
sendBeacon | 4029 | 4229 | 未知 | 31 | 未知 | 2630 | 11.3 |
serviceWorker | 40 | 40 | 未知 | 44 | 未知 | 27 | 11.3 |
share | 不支持 | 61 | 未知 | 不支持 | 未知 | 48 | 12.2 |
vendor | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
vendorSub | 支持 | 支持 | 未知 | 支持 | 未知 | 14 | 支持 |
vibrate | 4.4.33738 | 323233 | 未知 | 14 moz | 未知 | 支持36 | 不支持 |
webdriver | 63 | 63 | 未知 | 支持 | 未知 | 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
将报告 yes
和 no
值,而不是 1
和 0
。
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. 协议白名单包括 mailto
,mms
,nntp
,rtsp
和 webcal
。自定义协议必须以 web+
为前缀。
22. 规范要求所传递的 supportedConfigurations
选项包含 audioCapabilities
或 videoCapabilities
中的至少一个,并且所述参数包括编解码器字符串。
23. 该函数在不安全的上下文中不存在。直到 Chrome 58 才强制实施。
24. 从 Firefox 55 开始,如果在 supportedConfigurations
中未指定 audioCapabilities
或 videoCapabilities
,则将警告输出到 Web 控制台。
25. 另外,从 Firefox 55 开始,如果在 supportedConfigurations
中,audioCapabilities
videoCapabilities 的 contentType
值未指定 "codecs"
子字符串来定义媒体包装中允许的编解码器,则会向 Web 控制台输出警告。有关示例和更正,请参见下表中的注释。
26. 将来,如果在 supportedConfigurations
中未指定 audioCapabilities
和 videoCapabilities
,则将引发 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
。