1. 8.9 系统状态和功能
      1. 8.9.1 Navigator 对象
        1. 8.9.1.1 客户端标识
        2. 8.9.1.2 语言偏好
        3. 8.9.1.3 浏览器状态
        4. 8.9.1.4 自定义方案处理程序:registerProtocolHandler() 方法
        5. 8.9.1.5 Cookie
        6. 8.9.1.6 PDF 查看支持

8.9 系统状态和功能

8.9.1 Navigator 对象

Navigator

在所有当前引擎中支持。

Firefox1+Safari1+Chrome1+
Opera3+Edge79+
Edge (Legacy)12+Internet Explorer4+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android10.1+

Navigator 实例代表了用户代理(客户端)的身份和状态。它们也作为一种通用的全局对象,在此规范和其他规范中定位了各种 API。

8.9.1.1 客户端标识

在某些情况下,尽管整个行业付出了最大的努力,但 Web 浏览器仍然存在错误和限制,Web 作者被迫绕过这些问题。

本节定义了一组属性,可用于通过脚本确定正在使用的用户代理类型,以便绕过这些问题。

客户端检测应始终限于检测已知的当前版本;应始终假设将来版本和未知版本完全符合标准。

self.navigator.appCodeName

返回字符串“Mozilla”。

self.navigator.appName

返回字符串“Netscape”。

self.navigator.appVersion

返回浏览器的版本。

self.navigator.platform

返回平台的名称。

self.navigator.product

返回字符串“Gecko”。

window.navigator.productSub

返回字符串“20030107”或字符串“20100101”。

self.navigator.userAgent

返回完整的`User-Agent` 标头。

window.navigator.vendor

返回空字符串、字符串“Apple Computer, Inc.”或字符串“Google Inc.”。

window.navigator.vendorSub

返回空字符串。

8.9.1.2 语言偏好
self.navigator.language

返回表示用户首选语言的语言标签。

self.navigator.languages

返回表示用户首选语言的语言标签数组,最优语言位于首位。

最优语言是 navigator.language 返回的语言。

当用户代理对用户首选语言的理解发生变化时,会在 WindowWorkerGlobalScope 对象上触发 languagechange 事件。

self.navigator.onLine

如果用户代理绝对处于离线状态(与网络断开连接),则返回 false。如果用户代理可能在线,则返回 true。

当此属性的值发生变化时,会触发 onlineoffline 事件。

此属性本质上不可靠。计算机可以连接到网络,但没有互联网访问权限。

在此示例中,指示器会随着浏览器在线和离线而更新。

<!DOCTYPE HTML>
<html lang="en">
 <head>
  <title>Online status</title>
  <script>
   function updateIndicator() {
     document.getElementById('indicator').textContent = navigator.onLine ? 'online' : 'offline';
   }
  </script>
 </head>
 <body onload="updateIndicator()" ononline="updateIndicator()" onoffline="updateIndicator()">
  <p>The network is: <span id="indicator">(state unknown)</span>
 </body>
</html>
8.9.1.4 自定义方案处理程序:registerProtocolHandler() 方法

Navigator/registerProtocolHandler

Firefox2+SafariChrome13+
Opera11.6+Edge79+
Edge (Legacy)Internet Explorer
Firefox Android?Safari iOS?Chrome AndroidWebView Android?Samsung Internet?Opera Android?
window.navigator.registerProtocolHandler(scheme, url)

scheme 注册一个在 url 上的处理程序。例如,在线电话消息服务可以将自己注册为 sms: 方案的处理程序,以便如果用户单击此类链接,他们将有机会使用该网站。 [SMS]

字符串“%s”在 url 中用作占位符,用于放置要处理的内容的 URL。

如果用户代理阻止注册(例如,尝试将自己注册为“http”的处理程序),则会抛出 "SecurityError" DOMException

如果 url 中缺少“%s”字符串,则会抛出 "SyntaxError" DOMException

window.navigator.unregisterProtocolHandler(scheme, url)

取消注册由参数给出的处理程序。

如果用户代理阻止取消注册(例如,使用无效的方案),则会抛出 "SecurityError" DOMException

如果 url 中缺少“%s”字符串,则会抛出 "SyntaxError" DOMException

8.9.1.5 Cookie
window.navigator.cookieEnabled

如果设置 Cookie 将被忽略,则返回 false,否则返回 true。

8.9.1.6 PDF 查看支持
window.navigator.pdfViewerEnabled

Navigator/pdfViewerEnabled

在所有当前引擎中支持。

Firefox99+Safari16.4+Chrome94+
Opera?Edge94+
Edge (Legacy)?Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

如果用户代理在 导航 到 PDF 文件时支持内联查看,则返回 true,否则返回 false。在后一种情况下,PDF 文件将由 外部软件 处理。