W3cubDocs

/DOM

WindowEventHandlers.onhashchange

The hashchange event fires when a window's hash changes (see location.hash).

Syntax

window.onhashchange = funcRef;

or

<body onhashchange="funcRef();">

to overwrite any existing Event-Handlers.

In order to add an event-listener to an existing set of event-handlers use the function "addEventListener"

window.addEventListener("hashchange", funcRef, false);

Parameters

funcRef
A reference to a function.

Example

if ("onhashchange" in window) {
    //no alert
    console.log("The browser supports the hashchange event!");
}


function locationHashChanged() {
    if (location.hash === "#somecoolfeature") {
        somecoolfeature();
    }
}

window.onhashchange = locationHashChanged;



// example

// Using the location.hash property to change the anchor part
function changeHash() {
    location.hash = (Math.random() > 0.5) ? "666" : "777";
}

// Alert some text if there has been changes to the anchor part
function HashHandler() {
    console.log("The Hash has changed!");
}

window.addEventListener("hashchange", HashHandler, false);


The hashchange event

The dispatched hashchange event has the following fields:

Field Type Description
newURL DOMString The new URL to which the window is navigating.
oldURL DOMString The previous URL from which the window was navigated.

Workaround for event.newURL and event.oldURL

//let this snippet run before your hashchange event binding code
if(!window.HashChangeEvent)(function(){
	var lastURL=document.URL;
	window.addEventListener("hashchange",function(event){
		Object.defineProperty(event,"oldURL",{enumerable:true,configurable:true,value:lastURL});
		Object.defineProperty(event,"newURL",{enumerable:true,configurable:true,value:document.URL});
		lastURL=document.URL;
	});
}());

Specifications

Browser compatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
Basic support 5 Yes 3.6 8 10 5
Mobile
Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android iOS Safari Samsung Internet
Basic support Yes Yes Yes 4 11 5 ?

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onhashchange