ナビゲーションタイミング レベル2

W3C作業草案

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2025/WD-navigation-timing-2-20250929/
最新公開バージョン:
https://www.w3.org/TR/navigation-timing-2/
最新編集者ドラフト:
https://w3c.github.io/navigation-timing/
履歴:
https://www.w3.org/standards/history/navigation-timing-2/
コミット履歴
テストスイート:
https://wpt.fyi/navigation-timing/
編集者:
Yoav Weiss (Google)
(招待専門家)
以前の編集者:
Ilya Grigorik (Google)
(Microsoft社) - まで
(Microsoft社) - まで
(Google Inc.) - まで
フィードバック:
GitHub w3c/navigation-timing (プルリクエスト, 新しいIssue, オープンIssue)
public-web-perf@w3.org 件名 [NavigationTiming] (アーカイブ)
ブラウザー対応状況:
caniuse.com

概要

この仕様は、ウェブアプリケーションがドキュメントのナビゲーションに関する完全なタイミング情報へアクセスするためのインターフェースを定義します。

この文書のステータス

このセクションは、この文書が公開された時点でのステータスについて説明します。現在の W3C 公開物と、この技術レポートの最新改訂版は W3C 標準および草案一覧 で確認できます。

Navigation Timing 2 は初版([NAVIGATION-TIMING])を置き換え、以下の変更を含みます:

この文書は Web Performance Working Group により、 勧告トラック を用いた作業草案として公開されました。

作業草案としての公開は、W3C およびそのメンバーによる支持を意味するものではありません。

この文書はドラフトであり、今後随時更新、差し替え、または廃止される可能性があります。この文書を進行中の作業以外のものとして引用するのは適切ではありません。

この文書は W3C 特許ポリシー の下で運営されているグループによって作成されました。 W3C関連成果物に関する特許開示の公開リスト を管理しています。このページには特許開示の方法についても記載されています。個人が、必須特許請求項 を含むと信じる特許について実際に知っている場合、その情報は W3C特許ポリシー第6節 に従って開示する必要があります。

この文書は 2025年8月18日 W3C プロセス文書 により管理されています。

1. はじめに

このセクションは規範的ではありません。

ウェブアプリケーションのパフォーマンス特性を正確に測定することは、ウェブアプリケーションをより高速化するための重要な要素です。
JavaScriptベースの手法([JSMEASURE]で説明されているものなど)は、アプリケーション内でユーザーの待機時間を包括的に計測するための手段を提供できますが、多くの場合、エンドツーエンドの待機時間全体や詳細な測定は困難です。
例えば、以下のJavaScriptはページの完全な読み込みにかかる時間を測定しようとする単純な試みです:

<html>
<head>
<script type="text/javascript">
var start = new Date().getTime();
function onLoad() {
  var now = new Date().getTime();
  var latency = now - start;
  alert("page loading time: " + latency);
}
</script>
</head>
<body onload="onLoad()">
<!- Main page body goes from here. -->
</body>
</html>

上記のスクリプトは、head内で最初のJavaScriptが実行されたのページ読み込み時間を計算しますが、サーバーからページを取得するまでの時間やページの初期化ライフサイクルについての情報は得られません。

この仕様では、ドキュメントのナビゲーションに関連する高精度なパフォーマンス計測データを保存・取得するための PerformanceNavigationTiming インターフェースを定義します。このインターフェースは[PERFORMANCE-TIMELINE-2]に参加し、 ドキュメントのナビゲーションに関する高精度なパフォーマンスメトリクスデータの保存・取得を可能にします。 PerformanceNavigationTiming インターフェースは[HR-TIME]を利用しているため、 すべての時刻値はエントリーの time origin(タイムオリジン)、 および relevant settings object(関連設定オブジェクト)を基準に測定されます。

例えば、レスポンス終了がナビゲーション開始から100ms後に発生する場合、PerformanceNavigationTiming のデータは以下のようになります:

startTime:           0.000  // ナビゲーションリクエストの開始時刻
responseEnd:       100.000  // 最後の受信バイトの高精度時刻

次のスクリプトは、PerformanceNavigationTiming インターフェースを使って、 ドキュメントのナビゲーションに関する正確なタイミングデータを取得する方法を示しています:

<script>
function showNavigationDetails() {
  // 最初のエントリーを取得
  const [entry] = performance.getEntriesByType("navigation");
  // 開発者コンソールで表として表示
  console.table(entry.toJSON());
}
</script>
<body onload="showNavigationDetails()">

2. 用語

実際にはインターフェースであるFooについて、「a Foo object」という表現が使われることがありますが、より正確には「Fooインターフェースを実装するオブジェクト」となります。

現在のドキュメントという用語は、 Window オブジェクトに関連付けられている最新の Documentオブジェクトを指します。

本仕様全体を通して、すべての時刻値はドキュメントのナビゲーション開始からのミリ秒単位で測定されます。例えば、ドキュメントのナビゲーション開始時は時刻0です。現在時刻とは、ドキュメントのナビゲーション開始から現在時点までのミリ秒数を指します。この時刻の定義は[HR-TIME]仕様に基づいています。

3. ナビゲーションタイミング

3.1 PerformanceEntry インターフェースとの関係

PerformanceNavigationTiming インターフェースは PerformanceEntry インターフェースの以下の属性を拡張します:

注記

PerformanceNavigationTiming を実装するユーザーエージェントは、 supportedEntryTypes"navigation"Window コンテキスト用として含める必要があります。これにより、開発者はナビゲーションタイミングのサポートを検出できます。

3.2 PerformanceResourceTiming インターフェースとの関係

PerformanceNavigationTiming インターフェースは PerformanceResourceTiming インターフェースの以下の属性を拡張します:

注記

パフォーマンスタイムラインには 現在のドキュメント リソースだけが含まれます。パフォーマンスタイムライン内には PerformanceNavigationTiming オブジェクトは1つだけです。

3.3 PerformanceNavigationTiming インターフェース

注記

HTTPキャッシュ [RFC7234] からの内容の確認や取得は フェッチ処理 の一部です。 requestStart responseStart responseEnd 属性でカバーされています。

WebIDL[Exposed=Window]
interface PerformanceNavigationTiming : PerformanceResourceTiming {
    readonly        attribute DOMHighResTimeStamp  unloadEventStart;
    readonly        attribute DOMHighResTimeStamp  unloadEventEnd;
    readonly        attribute DOMHighResTimeStamp  domInteractive;
    readonly        attribute DOMHighResTimeStamp  domContentLoadedEventStart;
    readonly        attribute DOMHighResTimeStamp  domContentLoadedEventEnd;
    readonly        attribute DOMHighResTimeStamp  domComplete;
    readonly        attribute DOMHighResTimeStamp  loadEventStart;
    readonly        attribute DOMHighResTimeStamp  loadEventEnd;
    readonly        attribute NavigationTimingType type;
    readonly        attribute unsigned short       redirectCount;
    readonly        attribute DOMHighResTimeStamp  criticalCHRestart;
    readonly        attribute NotRestoredReasons?  notRestoredReasons;
    [Default] object toJSON();
};

PerformanceNavigationTiming には、 関連する ドキュメントロードタイミング情報 document load timing(ドキュメントロードタイミング) が関連付けられています。

PerformanceNavigationTiming には、 関連する ドキュメントアンロードタイミング情報 previous document unload timing(前回ドキュメントアンロードタイミング) が関連付けられています。

PerformanceNavigationTiming には、 関連する 数値 redirect count(リダイレクト回数) が関連付けられています。

PerformanceNavigationTiming には、 関連する NavigationTimingType navigation type(ナビゲーションタイプ) が関連付けられています。

PerformanceNavigationTiming には、 関連する DOMHighResTimeStamp Critical-CH restart time(Critical-CH再起動時刻) が関連付けられています。

PerformanceNavigationTiming には、 関連する NotRestoredReasons not restored reasons(復元されなかった理由) が関連付けられています。

PerformanceNavigationTiming には、 関連する null または service worker timing info service worker timing(サービスワーカータイミング) が関連付けられています。

unloadEventStart のゲッター手順は、 thisprevious document unload timingunload event start time を返します。

注記

前回のドキュメントと現在のドキュメントが同じ オリジンの場合、このタイムスタンプは ユーザーエージェントが前回のドキュメントの unload イベントを開始する直前に測定されます。前回のドキュメントが存在しない場合や、オリジンが異なる場合、この属性は0を返します。

unloadEventEnd のゲッター手順は、 thisprevious document unload timingunload event end time を返します。

注記

前回のドキュメントと現在のドキュメントが同じ オリジンの場合、このタイムスタンプは ユーザーエージェントが前回のドキュメントの unload イベントを処理した直後に測定されます。前回のドキュメントが存在しない場合や、オリジンが異なる場合、この属性は0を返します。

domInteractive のゲッター手順は、 thisdocument load timingDOM interactive time を返します。

注記

このタイムスタンプは、ユーザーエージェントが 現在のドキュメントの準備状態"interactive"に設定する前に測定されます。

domContentLoadedEventStart のゲッター手順は、 thisdocument load timingDOM content loaded event start time を返します。

注記

このタイムスタンプは、ユーザーエージェントが DOMContentLoaded イベントをディスパッチする前に測定されます。

domContentLoadedEventEnd のゲッター手順は、 thisdocument load timingDOM content loaded event end time を返します。

注記

このタイムスタンプは、ユーザーエージェントが DOMContentLoaded イベントの処理を完了した後に測定されます。

domComplete のゲッター手順は、 thisdocument load timingDOM complete time を返します。

注記

このタイムスタンプは、ユーザーエージェントが 現在のドキュメントの準備状態"complete"に設定する前に測定されます。詳細は document readiness を参照してください。

loadEventStart のゲッター手順は、 thisdocument load timingload event start time を返します。

注記

このタイムスタンプは、ユーザーエージェントが load イベントを ドキュメントにディスパッチする前に測定されます。

loadEventEnd のゲッター手順は、 thisdocument load timingload event end time を返します。

注記

このタイムスタンプは、ユーザーエージェントが load イベントの処理を ドキュメントに対して完了した後に測定されます。

type のゲッター手順は、 thisnavigation type を実行します。

注記

Refresh プラグマディレクティブ などを用いたクライアントサイドリダイレクトは、本仕様では HTTPリダイレクト とみなされません。 その場合、 type 属性は、例えば現在ページのリロード時は reload、 新しいURLへのナビゲーション時は navigate など、適切な値を返すべきです

redirectCount のゲッター手順は、 thisredirect count を返します。

criticalCHRestart のゲッター手順は、 thisCritical-CH restart time を返します。

注記

criticalCHRestart が 0 でない場合、そのタイムスタンプは 他のすべてのタイムスタンプ(navigationStart, unloadEventStart, unloadEventEnd を除く)よりも前になります。 これはナビゲーションのリダイレクト部分が再起動された瞬間を示すためです。

notRestoredReasons のゲッター手順は、 thisnot restored reasons を返します。

toJSON() メソッドは default toJSON stepsthis に対して実行します。

3.3.1 NavigationTimingType 列挙型

WebIDLenum NavigationTimingType {
    "navigate",
    "reload",
    "back_forward"
};

値は以下の通り定義されます:

navigate
履歴処理の挙動"default" または "replace" に設定されたナビゲーション。
reload
navigableリロード されたナビゲーション。
back_forward
履歴から適用された ナビゲーション。
注記

上記列挙値のフォーマットは WebIDLの列挙値フォーマット推奨と一致しません。 これは出荷済み実装との後方互換性の問題のため、変更できません。 [WebIDL]

4. 処理

4.1 処理モデル

1 この図は PerformanceNavigationTiming インターフェースで定義されるタイミング属性を示します。括弧内の属性は、異なるオリジンのドキュメントが関わるナビゲーションでは利用できない場合があります。
ナビゲーションタイミング属性

5. ナビゲーションタイミングエントリーの作成

ドキュメントには、関連付けられたナビゲーションタイミングエントリーがあり、初期状態では未設定です。

ナビゲーションタイミングエントリーを作成するには、Document documentに対し、 fetch timing info fetchTiming、 数値redirectCountNavigationTimingType navigationType、 nullまたはservice worker timing info serviceWorkerTiming、 DOMString cacheModeDOMHighResTimeStamp criticalCHRestartresponse body info bodyInfo を受け取り、以下を実行します:

  1. globaldocument関連グローバルオブジェクトとする。
  2. navigationTimingEntryを新しいPerformanceNavigationTiming オブジェクトとして globalrealmで作成する。
  3. リソースタイミングエントリーのセットアップnavigationTimingEntryに対して行い、"navigation"、documentURLfetchTimingcacheModebodyInfoを渡す。
  4. navigationTimingEntrydocument load timingdocumentload timing infoに設定する。
  5. navigationTimingEntryprevious document unload timingdocumentprevious document unload timingに設定する。
  6. navigationTimingEntryredirect countredirectCountに設定する。
  7. navigationTimingEntrynavigation typenavigationTypeに設定する。
  8. navigationTimingEntryservice worker timingserviceWorkerTimingに設定する。
  9. documentnavigation timing entrynavigationTimingEntryに設定する。
  10. navigationTimingEntryCritical-CH restart timecriticalCHRestartに設定する。
  11. navigationTimingEntrynot restored reasonsを、 NotRestoredReasonsオブジェクトの作成の結果に documentnot restored reasonsを渡す。
  12. navigationTimingEntryglobalperformance entry bufferに追加する。

ナビゲーションタイミングエントリーをキューするには、Document documentに対し、 queue documentnavigation timing entryをキューします。

6. プライバシーに関する考慮事項

このセクションは規範的ではありません。

6.1 情報開示

巧妙に設計されたタイミング攻撃により、エンドユーザーの閲覧履歴や活動履歴が漏洩する可能性があります。例えば、アンロード時刻によって前のページのアンロードハンドラの実行時間が分かり、それによりユーザーのログイン状況などを推測できる場合があります。これらの攻撃は、ドキュメントのアンロード時に同一オリジンチェックアルゴリズムを適用することで緩和されており、詳細はHTML仕様に記載されています。

同一オリジン制限の緩和は、 ドキュメント間の不正な訪問に対して十分な保護を提供しません。共有ホスティング環境では、信頼されていない第三者が同じIPアドレスで異なるポートにHTTPサーバーを設置できる場合があります。

6.2 ディレクトリ横断アクセス

同じホスト名を共有する異なるページ、例えばユーザー生成コンテンツをホストするサイトで異なる著者のコンテンツは、パス名によるアクセス制限機能がないため同一オリジンと見なされます。これらのページ間をナビゲートすると、後のページが前のページのタイミング情報(リダイレクトやアンロードイベントのタイミングなど)にアクセスできるようになります。

7. セキュリティに関する考慮事項

このセクションは規範的ではありません。

PerformanceNavigationTiming インターフェースは 現在のドキュメントに対して 前回のドキュメントに関するタイミング情報を公開します。 前回のドキュメントに関する情報を含む PerformanceNavigationTiming の属性へのアクセスを制限するために、 前回ドキュメントのアンロードアルゴリズムでは 同一オリジンポリシーが強制され、 前回のドキュメントに関連する属性はゼロに設定されます。

7.1 プロキシサーバーの検出

ユーザーエージェントとウェブサーバーの間にプロキシが配置されている場合、 connectStart から connectEnd までの時間は、ウェブサーバーではなくプロキシとの間の遅延を示します。 これにより、ウェブサーバーはプロキシの存在を推測できる可能性があります。SOCKSプロキシの場合、この時間にはプロキシ認証やプロキシがウェブサーバーへ接続する時間も含まれ、プロキシ検出が難しくなります。 HTTPプロキシの場合、ユーザーエージェントはプロキシサーバーの存在自体を認識していない場合もあり、この攻撃を常に緩和するのは困難です。

8. 廃止

このセクションでは、[NAVIGATION-TIMING] レベル1で導入された属性やインターフェースを定義し、 後方互換性のために保持されています。著者は以下のインターフェースの使用を推奨せず、 強く PerformanceNavigationTiming インターフェースの利用を推奨します—変更点と改善のまとめを参照してください。

8.1 PerformanceTiming インターフェース

WebIDL[Exposed=Window]
interface PerformanceTiming {
  readonly attribute unsigned long long navigationStart;
  readonly attribute unsigned long long unloadEventStart;
  readonly attribute unsigned long long unloadEventEnd;
  readonly attribute unsigned long long redirectStart;
  readonly attribute unsigned long long redirectEnd;
  readonly attribute unsigned long long fetchStart;
  readonly attribute unsigned long long domainLookupStart;
  readonly attribute unsigned long long domainLookupEnd;
  readonly attribute unsigned long long connectStart;
  readonly attribute unsigned long long connectEnd;
  readonly attribute unsigned long long secureConnectionStart;
  readonly attribute unsigned long long requestStart;
  readonly attribute unsigned long long responseStart;
  readonly attribute unsigned long long responseEnd;
  readonly attribute unsigned long long domLoading;
  readonly attribute unsigned long long domInteractive;
  readonly attribute unsigned long long domContentLoadedEventStart;
  readonly attribute unsigned long long domContentLoadedEventEnd;
  readonly attribute unsigned long long domComplete;
  readonly attribute unsigned long long loadEventStart;
  readonly attribute unsigned long long loadEventEnd;
  [Default] object toJSON();
};
注記

このセクションで定義されるすべての時刻値は、の午前0時からのミリ秒単位で測定されます。

navigationStart

この属性は、ユーザーエージェントが前のドキュメントのアンロードのプロンプトを完了した直後の時刻を返します。前のドキュメントが存在しない場合は、現在のドキュメントが作成された時刻を返します。

注記

この属性は PerformanceNavigationTiming には定義されていません。代わりに、著者は timeOrigin を使用して同等のタイムスタンプを取得できます。

unloadEventStart

前のドキュメントと現在のドキュメントが同じ オリジンの場合、この属性はユーザーエージェントが前のドキュメントの unload イベントを開始する直前の時刻を返します。前のドキュメントが存在しない場合や、前のドキュメントのオリジンが現在のドキュメントと異なる場合、この属性は0を返します。

unloadEventEnd

前のドキュメントと現在のドキュメントが同一オリジンの場合、この属性はユーザーエージェントが前のドキュメントの unload イベントを完了した直後の時刻を返します。前のドキュメントが存在しない場合や、オリジンが異なる場合、またはunloadがまだ完了していない場合、この属性は0を返します。

ナビゲーション時にHTTPリダイレクトがあり、すべてのリダイレクトが同じオリジンからではない場合、 PerformanceTiming.unloadEventStart および PerformanceTiming.unloadEventEnd はどちらも0を返します。

redirectStart

ナビゲーション時にHTTPリダイレクトがあり、すべてのリダイレクトが同じ オリジンの場合、この属性はリダイレクトを開始する フェッチの開始時刻 を返します。そうでない場合、この属性は0を返します。

redirectEnd

ナビゲーション時にHTTPリダイレクトがあり、すべてのリダイレクトが同じ オリジンの場合、この属性は最後のリダイレクトのレスポンスの最後のバイトを受信した直後の時刻を返します。そうでない場合、この属性は0を返します。

fetchStart

新しいリソースが "GET" リクエストメソッドを使ってフェッチされる場合、fetchStartはユーザーエージェントがHTTPキャッシュの確認を開始する直前の時刻を返します。そうでない場合は、ユーザーエージェントがリソースのフェッチを開始する時刻を返します。

domainLookupStart

この属性は、ユーザーエージェントが現在のドキュメントのドメイン名のルックアップを開始する直前の時刻を返します。持続的接続 [RFC2616]が使用されている場合や、現在のドキュメントがHTTPキャッシュまたはローカルリソースから取得された場合、この属性はPerformanceTiming.fetchStartと同じ値を返します。

domainLookupEnd

この属性は、ユーザーエージェントが現在のドキュメントのドメイン名のルックアップを完了した直後の時刻を返します。持続的接続 [RFC2616]が使用されている場合や、現在のドキュメントがHTTPキャッシュまたはローカルリソースから取得された場合、この属性はPerformanceTiming.fetchStartと同じ値を返します。

注記

HTTPキャッシュ [RFC2616]から内容を確認・取得することは フェッチ処理の一部であり、 PerformanceTiming.requestStartPerformanceTiming.responseStart および PerformanceTiming.responseEnd 属性でカバーされます。

注記

ユーザーエージェントがすでにキャッシュにドメイン情報を持っている場合、domainLookupStartとdomainLookupEndはユーザーエージェントがキャッシュからドメインデータの取得を開始・終了した時刻を表します。

connectStart

この属性は、ユーザーエージェントが現在のドキュメントを取得するためにサーバーへの接続を開始する直前の時刻を返します。持続的接続 [RFC2616]が使用されている場合や、現在のドキュメントがHTTPキャッシュまたはローカルリソースから取得された場合、この属性はPerformanceTiming.domainLookupEndの値を返します。

connectEnd

この属性は、ユーザーエージェントが現在のドキュメントを取得するためにサーバーへの接続を完了した直後の時刻を返します。持続的接続 [RFC2616]が使用されている場合や、現在のドキュメントがHTTPキャッシュまたはローカルリソースから取得された場合、この属性はPerformanceTiming.domainLookupEndの値を返します。

トランスポート接続が失敗し、ユーザーエージェントが再接続した場合、 PerformanceTiming.connectStart および PerformanceTiming.connectEnd は新しい接続の値を返すべきです。

PerformanceTiming.connectEnd には、トランスポート接続の確立時間だけでなく、SSLハンドシェイクやSOCKS認証などの時間も含まれます。

secureConnectionStart

この属性はオプションです。ユーザーエージェントがこの属性を利用できない場合はundefinedに設定する必要があります。利用可能な場合、現在のページのスキーム [URL]が "https" なら、ユーザーエージェントが現在の接続のハンドシェイク処理を開始する直前の時刻を返します。利用可能だがHTTPSでない場合は0を返します。

requestStart

この属性は、ユーザーエージェントがサーバー、HTTPキャッシュ、またはローカルリソースから現在のドキュメントのリクエストを開始する直前の時刻を返します。

リクエスト送信後にトランスポート接続が失敗し、ユーザーエージェントが再接続してリクエストを再送した場合、 PerformanceTiming.requestStart は新しいリクエストの値を返すべきです。

注記

このインターフェースにはリクエスト送信完了を表す属性(例: requestEnd)はありません。

  • ユーザーエージェントからのリクエスト送信完了は、ネットワークトランスポートにおける対応する完了時刻を必ずしも示さないため、そのような属性の大部分の利点が得られません。
  • 一部のユーザーエージェントはHTTP層のカプセル化により、リクエスト送信の実際の完了時刻を決定するコストが高いです。
responseStart

この属性は、ユーザーエージェントがサーバー、HTTPキャッシュ、またはローカルリソースからレスポンスの最初のバイトを受信した直後の時刻を返します。

responseEnd

この属性は、ユーザーエージェントが現在のドキュメントの最後のバイトを受信した直後、またはトランスポート接続が閉じられる直前(どちらか早い方)の時刻を返します。ドキュメントはサーバー、HTTPキャッシュ、またはローカルリソースから受信される場合があります。

domLoading

この属性は、ユーザーエージェントが現在のドキュメントの準備状態"loading"に設定する直前の時刻を返します。

警告

既存のユーザーエージェントにおいてDocumentオブジェクトが作成される時期の違いにより、domLoadingの値は実装依存となり、意味のあるメトリクスには使用すべきではありません。

domInteractive

この属性は、ユーザーエージェントが現在のドキュメントの準備状態"interactive"に設定する直前の時刻を返します。

domContentLoadedEventStart

この属性は、ユーザーエージェントがDOMContentLoadedイベントDocumentに発火する直前の時刻を返します。

domContentLoadedEventEnd

この属性は、ドキュメントのDOMContentLoadedイベントが完了した直後の時刻を返します。

domComplete

この属性は、ユーザーエージェントが現在のドキュメントの準備状態"complete"に設定する直前の時刻を返します。

現在のドキュメントの準備状態が複数回同じ状態に変化した場合、 PerformanceTiming.domLoadingPerformanceTiming.domInteractivePerformanceTiming.domContentLoadedEventStartPerformanceTiming.domContentLoadedEventEnd および PerformanceTiming.domComplete は最初に該当するドキュメントの準備状態への変化が発生した時刻を返します。

loadEventStart

この属性は、現在のドキュメントのloadイベントが発火する直前の時刻を返します。loadイベントがまだ発火していない場合は0を返します。

loadEventEnd

この属性は、現在のドキュメントのloadイベントが完了した時刻を返します。loadイベントが発火していない場合や完了していない場合は0を返します。

toJSON()
default toJSON stepsthisに対して実行します。

8.2 PerformanceNavigation インターフェース

WebIDL[Exposed=Window]
interface PerformanceNavigation {
  const unsigned short TYPE_NAVIGATE = 0;
  const unsigned short TYPE_RELOAD = 1;
  const unsigned short TYPE_BACK_FORWARD = 2;
  const unsigned short TYPE_RESERVED = 255;
  readonly attribute unsigned short type;
  readonly attribute unsigned short redirectCount;
  [Default] object toJSON();
};
TYPE_NAVIGATE

履歴処理動作"default" または "replace" に設定されているナビゲーション。

TYPE_RELOAD

履歴処理動作"reload" に設定されているナビゲーション。

TYPE_BACK_FORWARD

履歴処理動作"entry update" に設定されているナビゲーション。

TYPE_RESERVED

上記以外で定義されていないナビゲーションタイプ。

type

この属性は現在の閲覧コンテキストで直近の非リダイレクトナビゲーションのタイプを返します。以下のnavigation type値のいずれかになります。

注記

Refreshプラグマディレクティブ等によるクライアントサイドリダイレクトは、本仕様ではHTTPリダイレクトとみなされません。その場合、type属性は、現在ページをリロードした場合はTYPE_RELOAD、新しいURLに遷移した場合はTYPE_NAVIGATEなど、適切な値を返すべきです。

redirectCount

この属性は、現在の閲覧コンテキストで直近の非リダイレクトナビゲーション以降のリダイレクト回数を返します。リダイレクトがない場合や、リダイレクトのいずれかが遷移先ドキュメントと同一オリジンでない場合は0を返します。

toJSON()
default toJSON stepsthisに対して実行します。

8.3 Performance インターフェースへの拡張

WebIDL[Exposed=Window]
partial interface Performance {
  [SameObject]
  readonly attribute PerformanceTiming timing;
  [SameObject]
  readonly attribute PerformanceNavigation navigation;
};

Performanceインターフェースは [PERFORMANCE-TIMELINE-2] で定義されています。

timing

timing属性は、直近の非リダイレクトナビゲーション以降の閲覧コンテキストに関連するタイミング情報を表します。この属性はPerformanceTimingインターフェースで定義されます。

navigation

navigation属性はPerformanceNavigationインターフェースで定義されています。

9. 適合性

非規範的と明記されたセクションだけでなく、著作ガイドライン・図・例・注記も本仕様では非規範的です。それ以外の記述はすべて規範的です。

この文書におけるキーワード SHOULD は、 BCP 14 [RFC2119] [RFC8174] に記載されている通りに解釈されるものとし、かつこのようにすべて大文字で記載された場合にのみ適用されます。

A. 謝辞

Anne Van Kesteren、Arvind Jain、Boris Zbarsky、Jason Weber、Jonas Sicking、James Simonsen、Karen Anderson、Nic Jansma、Philippe Le Hegaret、Steve Souders、Todd Reifsteck、Tony Gentilcore、William Chan、Zhiheng Wang 各氏の本作業への貢献に感謝します。

B. 参考文献

B.1 規定の参考文献

[dom]
DOM 標準。Anne van Kesteren。WHATWG。 Living Standard。URL: https://dom.spec.whatwg.org/
[FETCH]
Fetch 標準。Anne van Kesteren。WHATWG。 Living Standard。URL: https://fetch.spec.whatwg.org/
[HR-TIME]
高精度時刻。Yoav Weiss。W3C。2024年11月7日。W3C作業草案。URL: https://www.w3.org/TR/hr-time-3/
[HTML]
HTML 標準。Anne van Kesteren、Domenic Denicola、Dominic Farolino、Ian Hickson、Philip Jägenstedt、Simon Pieters。WHATWG。Living Standard。URL: https://html.spec.whatwg.org/multipage/
[NAVIGATION-TIMING]
Navigation Timing。Zhiheng Wang。 W3C。2012年12月17日。W3C勧告。URL: https://www.w3.org/TR/navigation-timing/
[PERFORMANCE-TIMELINE-2]
パフォーマンスタイムライン。Nicolas Pena Moreno。W3C。2025年5月21日。CRD。URL: https://www.w3.org/TR/performance-timeline/
[RESOURCE-TIMING-2]
リソースタイミング。Yoav Weiss、Noam Rosenthal。W3C。2025年8月20日。CRD。URL: https://www.w3.org/TR/resource-timing/
[RFC2119]
RFCで要求レベルを示すキーワード。S. Bradner。IETF。1997年3月。Best Current Practice。URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC2616]
ハイパーテキスト転送プロトコル -- HTTP/1.1。R. Fielding、J. Gettys、J. Mogul、H. Frystyk、L. Masinter、P. Leach、T. Berners-Lee。IETF。1999年6月。ドラフト標準。URL: https://www.rfc-editor.org/rfc/rfc2616
[RFC7234]
ハイパーテキスト転送プロトコル (HTTP/1.1): キャッシュ。R. Fielding (編集)、M. Nottingham (編集)、J. Reschke (編集)。IETF。2014年6月。提案標準。URL: https://httpwg.org/specs/rfc7234.html
[RFC8174]
RFC 2119 キーワードにおける大文字・小文字の曖昧性。B. Leiba。IETF。2017年5月。Best Current Practice。URL: https://www.rfc-editor.org/rfc/rfc8174
[service-workers]
Service Workers。Yoshisato Yanagisawa、Monica CHINTALA。W3C。2025年3月6日。CRD。URL: https://www.w3.org/TR/service-workers/
[URL]
URL 標準。Anne van Kesteren。WHATWG。 Living Standard。URL: https://url.spec.whatwg.org/
[WEBIDL]
Web IDL 標準。Edgar Chen、Timothy Gu。 WHATWG。Living Standard。URL: https://webidl.spec.whatwg.org/

B.2 参考情報

[HR-TIME-2]
高精度タイム レベル2. Ilya Grigorik. W3C. 2019年11月21日. W3C勧告. URL: https://www.w3.org/TR/hr-time-2/
[JSMEASURE]
WWWにおけるクライアント体感応答時間の計測. Ramakrishnan Rajamony; Mootaz Elnozahy. 2001年3月. USENIX Symposium on Internet Technologies and Systems (USITS) 第3回論文集. URL: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.69.7329&rep=rep1&type=pdf