The hashchange event is fired when the fragment identifier of the URL has changed (the part of the URL that follows the # symbol, including the # symbol).
| Bubbles | Yes |
| Cancelable | No |
| Target objects | Window |
| Interface | HashChangeEvent |
| Default action | None |
Properties
| Property | Type | Description |
|---|---|---|
target Read only |
EventTarget |
The browsing context (<code>window</code>). |
type Read only |
DOMString |
The type of event. |
bubbles Read only |
Boolean |
Whether the event normally bubbles or not |
cancelable Read only |
Boolean |
Whether the event is cancellable or not? |
oldURL Read only |
string | The previous URL from which the window was navigated. |
| newURL Read only | string |
There are several fallback scripts listed on this 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 window.onhashchange property:
;(function(window) {
// exit if the browser implements that event
if ("onhashchange" in window) { 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 |
|---|---|---|
| WHATWG HTML Living Standard The definition of 'hashchange' in that specification. |
Living Standard | Initial definition |
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support | 5.0 | (Yes) | 3.6 (1.9.2)[1] | 8.0[2] | 10.6 | 5.0 |
| Feature | Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | 2.2 | (Yes) | 1.0 (1.9.2) | 9.0 | 11.0 | 5.0 |
[1] Support for the oldURL/newURL attributes added in Firefox 6.
[2] oldURL/newURL attributes are not supported.
See also
Document Tags and Contributors
Tags:
Contributors to this page:
k-gun,
erikadoyle,
Sebastianz,
Tigt,
molsson,
bjb568,
teoli,
leon_gilyadov,
Sheppy,
ethertank,
louisremi
Last updated by:
k-gun,