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 クッキー
        6. 8.9.1.6 PDF viewing support

8.9 システム状態および性能

8.9.1 Navigatorオブジェクト

Navigator

Support in all current engines.

Firefox1+Safari1+Chrome1+
Opera3+Edge79+
Edge (Legacy)12+Internet Explorer4+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android10.1+

Instances of Navigator represent the identity and state of the user agent (the client). They also serve as a generic global under which various APIs are located in this and other specifications.

8.9.1.1 クライアントの識別

特定の場合において、業界全体の最善の努力にもかかわらず、ウェブブラウザーは、ウェブ著者が回避することを余儀なくされるバグや限界がある。

このセクションは、スクリプトから使用中のユーザーエージェントの種類を判断するために使用できる属性の集合を定義し、順番にこれらの問題を回避する。

クライアント検出は常に既知の現行バージョンの検出に限定されるべきである。将来のバージョンおよび未知のバージョンは、常に完全に準拠するよう仮定されるべきである。

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によって返されるものである。

どのユーザーの優先言語かユーザーエージェントの理解が変更する場合、languagechangeイベントは、WindowまたはWorkerGlobalScopeオブジェクトで発火する。

self.navigator.onLine

ユーザーエージェントが正確にオフラインである(ネットワークから切断されている)場合にfalseを返すユーザーエージェントがオンラインかもしれない場合にtrueを返す。

この属性値が変更される場合、イベントonlineおよびofflineが発火する。

この属性は、本質的に信頼できない。コンピューターは、インターネット接続がなくてもネットワークに接続できる。

この例において、ブラウザーがオンラインおよびオフラインになるように、インジケーターが更新される。

<!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 Custom scheme handlers: the registerProtocolHandler() method

Navigator/registerProtocolHandler

Firefox3+SafariNoChrome13+
Opera11.6+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox AndroidNoSafari iOSNoChrome AndroidNoWebView AndroidNoSamsung InternetNoOpera AndroidNo
window.navigator.registerProtocolHandler(scheme, url)

schemeのハンドラーをurlに登録する。たとえば、オンライン電話メッセージングサービスは、それ自体をsms:スキームのハンドラーとして登録できるため、ユーザーがそのようなリンクをクリックする場合に、そのウェブサイトを使用する機会が与えられる。[SMS]

url内文字列"%s"は、扱うにあたりコンテンツのURLをどこに置くかのプレースホルダーとして使用される。

ユーザーエージェントが登録をブロックする場合、"SecurityError" DOMExceptionを投げる(これは、たとえば"http"のハンドラーとして登録しようとした場合に発生する可能性がある)。

"%s"文字列がurlにない場合、"SyntaxError" DOMExceptionを投げる。

window.navigator.unregisterProtocolHandler(scheme, url)

引数で指定されたハンドラーの登録を解除する。

ユーザーエージェントが登録解除をブロックする場合、"SecurityError" DOMExceptionを投げる(これは、たとえば、不正なスキームの場合に発生する可能性がある)。

"%s"文字列がurlにない場合、"SyntaxError" DOMExceptionを投げる。

8.9.1.5 Cookies
window.navigator.cookieEnabled

クッキーの設定が拒否される場合falseを返し、そうでなければtrueを返す。

8.9.1.6 PDF viewing support
window.navigator.pdfViewerEnabled

Returns true if the user agent supports inline viewing of PDF files when navigating to them, or false otherwise. In the latter case, PDF files will be handled by external software.