Es posible evitar saltar al hash cuando el hash cambia con la siguiente función, por ejemplo:
function handleHashChange() { const scrollY = window.pageYOffset; window.scrollTo({top: scrollY}); } Pero esto solo funciona si el hash se cambia más tarde. Cuando se carga una página con una URL que ya consta de un hash , esto no funciona. (Por ejemplo: mysite.com/posts/#popular) Supongo que tal vez porque el evento de cambio de hashchange nativo se envía a la cola de devolución de llamada antes de que se agregue el detector de eventos de cambio de hashchange personalizado.
¿Hay alguna solución a este problema?
Entonces, parece que todo lo que se necesita hacer es llamar a esa función de desplazamiento dentro del detector de eventos de load :
window.addEventListener('load',()=>{ const scrollY = window.pageYOffset; setTimeout(() => { window.scrollTo({top: scrollY}); }, 0); });