Обновляя хеш с помощью location.href
, браузер автоматически перемещается к указателю. e.preventDefault()
только отменяет поведение события по умолчанию, оно не влияет на другие методы изменения хеша, даже если они вызываются из одного и того же прослушивателя событий.
Вы можете использовать history.replaceState
или history.pushState
, чтобы изменить хеш без прыжка:
// Replaces the current history entry
history.replaceState(null, '', '#newhash');