The HashChangeEvent
interface represents events that fire when the fragment identifier of the URL has changed.
The fragment identifier is the part of the URL that follows (and includes) the #
symbol.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/Event" target="_top"><rect x="1" y="1" width="75" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="38.5" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">Event</text></a><polyline points="76,25 86,20 86,30 76,25" stroke="#D4DDE4" fill="none"/><line x1="86" y1="25" x2="116" y2="25" stroke="#D4DDE4"/><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent" target="_top"><rect x="116" y="1" width="150" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="191" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">HashChangeEvent</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Properties
This interface also inherits the properties of its parent, Event
.
HashChangeEvent.newURL
Read only- The new URL to which the window is navigating.
HashChangeEvent.oldURL
Read only- The previous URL from which the window was navigated.
Methods
This interface has no methods of its own, but inherits the methods of its parent, Event
.
Examples
Syntax options for a hash change
You can listen for the hashchange
event using any of the following options:
window.onhashchange = funcRef;
or
<body onhashchange="funcRef();">
or
window.addEventListener("hashchange", funcRef, false);
Basic example
function locationHashChanged() { if (location.hash === '#somecoolfeature') { somecoolfeature(); } } window.addEventListener('hashchange', locationHashChanged);
Polyfill
There are several fallback scripts listed on the Modernizr GitHub page. Basically, those scripts check the location.hash
at a regular interval. Here is a version that allows only one handler to be bound to the onhashchange
property:
;(function(window) { // Exit if the browser implements that event if ( "onhashchange" in window.document.body ) { return; } var location = window.location, oldURL = location.href, oldHash = location.hash; // Check the location hash on a 100ms interval setInterval(function() { var newURL = location.href, newHash = location.hash; // If the hash has changed and a handler has been bound... if ( newHash != oldHash && typeof window.onhashchange === "function" ) { // Execute the handler window.onhashchange({ type: "hashchange", oldURL: oldURL, newURL: newURL }); oldURL = newURL; oldHash = newHash; } }, 100); })(window);
Specifications
Specification | Status | Comment |
---|---|---|
HTML Living StandardThe definition of 'HashChangeEvent' in that specification. | Living Standard | Initial definition |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
HashChangeEvent
|
Chrome
Full support 5 |
Edge
Full support 12 |
Firefox
Full support 3.6 |
IE
Full support 8 |
Opera
Full support 10.6 |
Safari
Full support 5 |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 4 |
Opera Android
Full support 11 |
Safari iOS
Full support 5 |
Samsung Internet Android
Full support Yes |
newURL
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 6 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
oldURL
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 6 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
Legend
- Full support
- Full support
- No support
- No support
Related events
hashchange
popstate
HashChangeEvent by Mozilla Contributors is licensed under CC-BY-SA 2.5.