英文:
Window.scroll() method only working on hard reload, but not onMount() in Svelte
问题
我正在尝试在特定组件挂载时每次将窗口设置到特定位置。我在这里使用了 window.scroll()
和 onMount()
处理程序:
onMount(() => {
window.scroll({
top: 400,
left: 100,
behavior: "smooth",
})
})
问题是,该函数仅在我手动重新加载浏览器页面时才起作用,而在我实际导航到我的 SvelteKit 应用程序页面时却不起作用。
我修改了函数以指示 onMount 是否确实起作用:
onMount(() => {
window.scroll({
top: 400,
left: 100,
behavior: "smooth",
})
console.log("页面已挂载!")
})
onDestroy(() => {
console.log("页面已卸载!")
})
console.log()
总是按预期工作,但 window.scroll()
不起作用。这里可能存在什么问题?
英文:
I am trying to set my window to a particular place everytime a particular component is mounted. I am using window.scroll()
and onMount()
handler for this.
onMount(() => {
window.scroll({
top: 400,
left: 100,
behavior: "smooth",
})
})
The problem is that the function only works when I manually reload the page in the browser, and not when I actually navigate to the page in my sveltekit app.
I modified the function to indicate whether onMount is indeed working:
onMount(() => {
window.scroll({
top: 400,
left: 100,
behavior: "smooth",
})
console.log("Page Mounted!")
})
onDestroy(() => {
console.log("Page Unmounted!")
})
console.log()
always works as expected but not window.scroll()
. What could be the problem here?
答案1
得分: 0
如评论中所提到的,将 window.scroll()
包装在 setTimeout()
中可以解决这个问题。
英文:
As mentioned in the comments, wrapping window.scroll()
in a setTimeout()
fixed this issue.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论