files/en-us/web/api/window/hashchange_event/index.md
{{APIRef}}
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 {{domxref("history.pushState()")}} or {{domxref("history.replaceState()")}}.
Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property.
addEventListener("hashchange", (event) => { })
onhashchange = (event) => { }
A {{domxref("HashChangeEvent")}}. Inherits from {{domxref("Event")}}.
{{InheritanceDiagram("HashChangeEvent")}}
In addition to the Window interface, the event handler property onhashchange is also available on the following targets:
You can use the hashchange event in an {{domxref("EventTarget/addEventListener", "addEventListener")}} method:
window.addEventListener("hashchange", () => {
console.log("The hash has changed!");
});
Or use the onhashchange event handler property:
function locationHashChanged() {
if (location.hash === "#cool-feature") {
console.log("You're visiting a cool feature!");
}
}
window.onhashchange = locationHashChanged;
{{Specifications}}
{{Compat}}