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表示のサポート

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

8.9.1 Navigatorオブジェクト

Navigator

Support in all current engines.

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

Navigatorのインスタンスは、ユーザーエージェント(クライアント)のIDと状態を表す。これらは、さまざまなAPIがこの仕様およびその他の仕様に配置されている汎用グローバルとしても機能する。

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 カスタムスキームハンドラー:registerProtocolHandler()メソッド

Navigator/registerProtocolHandler

Firefox2+SafariNoChrome13+
Opera11.6+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox Android?Safari iOS?Chrome AndroidNoWebView Android?Samsung Internet?Opera Android?
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 クッキー
window.navigator.cookieEnabled

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

8.9.1.6 PDF表示のサポート
window.navigator.pdfViewerEnabled

Navigator/pdfViewerEnabled

Support in all current engines.

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

ユーザーエージェントがPDFファイルにナビゲートするときにPDFファイルのインライン表示をサポートしている場合はtrueを返し、そうでなければfalseを返す。後者の場合、PDFファイルは外部ソフトウェアによって処理される。