Request: isHistoryNavigation property

Note: This feature is available in Web Workers.

The isHistoryNavigation read-only property of the Request interface is a boolean indicating whether the request is a history navigation.

A history navigation is a navigation within the browser's history, made by calling History.go(), History.back(), History.forward(), Navigation.traverseTo(), Navigation.back(), Navigation.forward(), or directly by clicking the browser's back or forward navigation button.

Value

A boolean value.

Examples

This example executes in a service worker. It listens for the fetch event. In the event handler, the service worker checks the isHistoryNavigation property to know whether the request happened because of a history navigation. If so, it attempts to respond with a cached response. If the cache does not contain a response for this request, the service worker fetches a response from the network, caches a clone of it, and responds with the network response.

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;
          });
        }
      }),
    );
  }

  // ...
});

Specifications

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

Browser compatibility

BCD tables only load in the browser

See also