Request: isHistoryNavigation プロパティ

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

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

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

論理値です。

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

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

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

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

            return response;
          });
        }
      }),
    );
  }

  // ...
});

仕様書

Specification
Fetch
# ref-for-dom-request-ishistorynavigation①

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
isHistoryNavigation

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

関連情報