Skip to content

Instantly share code, notes, and snippets.

@marlenesco
Forked from sstephenson/back_forward.js
Created April 10, 2020 14:25
Show Gist options
  • Save marlenesco/ef11093338a11dc4623aade49897b300 to your computer and use it in GitHub Desktop.
Save marlenesco/ef11093338a11dc4623aade49897b300 to your computer and use it in GitHub Desktop.
How to detect whether a hash change came from the Back or Forward button
var detectBackOrForward = function(onBack, onForward) {
hashHistory = [window.location.hash];
historyLength = window.history.length;
return function() {
var hash = window.location.hash, length = window.history.length;
if (hashHistory.length && historyLength == length) {
if (hashHistory[hashHistory.length - 2] == hash) {
hashHistory = hashHistory.slice(0, -1);
onBack();
} else {
hashHistory.push(hash);
onForward();
}
} else {
hashHistory.push(hash);
historyLength = length;
}
}
};
window.addEventListener("hashchange", detectBackOrForward(
function() { console.log("back") },
function() { console.log("forward") }
));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment