Если вы хотите, чтобы хеш-ссылка работала нормально, но просто хотите, чтобы хеш косметически стерся, этот код может подойти вам:
<!DOCTYPE html>
<html>
<a class="nav-link" href="#home" onClick="removehash()">Home</a>
<div style="height:3000px"></div>
<h1 id="home">HOME</h1>
<script>
function removehash(){
setTimeout(function(){
history.replaceState("", document.title, window.location.pathname);
}, 1);
}
</script>
Но, возможно, более правильным способом было бы присоединить новое событие, управляющее смещением по оси Y на странице. Это немного сложнее. Дайте мне знать, если вы ищете этот ответ.