Request: isHistoryNavigation property

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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;
        }
        return fetch(event.request).then((response) => {
          const responseClone = response.clone();

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

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

  // …
});

Specifications

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

Browser compatibility

See also