防止在初始加载由哈希组成的URL时跳转到哈希



当散列发生变化时,可以通过以下函数防止跳到散列,例如:

function handleHashChange() {
const scrollY = window.pageYOffset;
window.scrollTo({top: scrollY});
}

但只有当稍后更改哈希时,这才有效。当加载一个URL且已经包含哈希的页面时,这将不起作用。(例如:mysite.com/posts/#popular(我想可能是因为在添加自定义hashchange事件侦听器之前,本机hashchange事件已发送到回调队列。

这个问题有什么解决办法吗?

因此,似乎所需要做的就是在load事件侦听器中调用滚动函数:

window.addEventListener('load',()=>{
const scrollY = window.pageYOffset;
setTimeout(() => {
window.scrollTo({top: scrollY});
}, 0);
});

相关内容

  • 没有找到相关文章