Use history.replaceState
or history.pushState
* to change the hash. This will not trigger the jump to the associated element.
Example
$(document).on('click', 'a[href^=#]', function(event) {
event.preventDefault();
history.pushState({}, '', this.href);
});
* If you want history forward and backward support
History behaviour
If you are using history.pushState
and you don’t want page scrolling when the user uses the history buttons of the browser (forward/backward) check out the experimental scrollRestoration
setting (Chrome 46+ only).
history.scrollRestoration = 'manual';