Skip to content

Instantly share code, notes, and snippets.

@N02870941
Forked from sstephenson/back_forward.js
Created December 13, 2017 19:47
Show Gist options
  • Save N02870941/080208b84daff813b30778e0ae08259d to your computer and use it in GitHub Desktop.
Save N02870941/080208b84daff813b30778e0ae08259d 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