このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Request: isHistoryNavigation プロパティ

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

メモ: この機能はウェブワーカー内で利用可能です。

isHistoryNavigationRequest インターフェイスの。読み取り専用プロパティで、このリクエストが履歴ナビゲーションであるかどうかを示す論理値です。

履歴ナビゲーションは、ブラウザーの履歴の中の移動であり、 History.go()History.back()History.forward()Navigation.traverseTo()Navigation.back()Navigation.forward() を呼び出したり、ブラウザーの前ページ、次ページへのナビゲーションボタンをクリックしたりして行うものです。

論理値です。

この例は、サービスワーカー内で実行されます。 fetch イベントを待ち受けします。イベントハンドラー内で、サービスワーカーは isHistoryNavigation プロパティをチェックして、リクエストが履歴ナビゲーションによるものかどうかを判断します。 履歴ナビゲーションによるリクエストの場合は、キャッシュされたレスポンスで応答しようと試みます。 キャッシュがこのリクエストに対するレスポンスを含んでいない場合は、サービスワーカーはネットワークからレスポンスを取得し、その複製をキャッシュし、ネットワークレスポンスで応答します。

js
self.addEventListener("fetch", (event) => {
  // …

  if (event.request.isHistoryNavigation) {
    event.respondWith(
      (async () => {
        let response = await caches.match(event.request);
        if (response !== undefined) {
          return response;
        }
        response = await fetch(event.request);
        const responseClone = response.clone();

        event.waitUntil(
          caches
            .open("v1")
            .then((cache) => cache.put(event.request, responseClone)),
        );

        return response;
      })(),
    );
  }

  // …
});

仕様書

仕様書
Fetch
# ref-for-dom-request-ishistorynavigation①

ブラウザーの互換性

関連情報