Window: hashchange event

Baseline
Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

>

The hashchange event is fired when the fragment identifier of the URL has changed (the part of the URL beginning with and following the # symbol).

This event does not fire when the hash is modified using history.pushState() or history.replaceState().

Syntax

Use the event name in addEventListener():

js
addEventListener("hashchange", (event) => { })

Alternatively, assign to the event handler property of the interface:

js
onhashchange = (event) => { }

Event type

A HashChangeEvent. Inherits from Event.

Event HashChangeEvent

Event handler aliases

In addition to the Window interface, the event handler property onhashchange is also available on the following targets:

Examples

You can use the hashchange event in an addEventListener method:

js
window.addEventListener("hashchange", () => {
  console.log("The hash has changed!");
});

Or use the onhashchange event handler property (but note that this replaces other event listeners added using onhashchange, if any):

js
function locationHashChanged() {
  if (location.hash === "#cool-feature") {
    console.log("You're visiting a cool feature!");
  }
}

window.onhashchange = locationHashChanged;

Specifications

Specification
HTML>
# event-hashchange>
HTML>
# handler-window-onhashchange>

Browser compatibility

See also