【发布时间】:2018-03-20 02:06:36
【问题描述】:
问题
我正在创建一个相当简单的投资组合。我在顶部有一个导航栏,有几个导航链接。其中之一是“About Me”,点击后会自动提示页面跳转到html div section标签,元素id为#about-me。 URL 也会发生变化,并在末尾附加 #about-me。
当我刷新页面时,url 保持不变,因此页面不会滚动回顶部,而是在重新加载时显示相同的位置。我相信这是由于浏览器自动使用缓存? (如果我错了请纠正我)
妥善处理的最佳方法是什么?
一些可能的解决方案
-
当 DOM 完成加载并准备好进行操作时,使用 jQuery
.ready()函数立即调用一个函数,该函数将自动将window.location.href设置为源 URL,这将重置滚动位置。 -
防止浏览器缓存。 (我想这有一个缺点,特别是如果我希望我网站的其他部分在以后使用缓存?)
【问题讨论】:
-
尝试在加载时使用 scrollTop:0
-
将滚动位置保存到
localStorage并在页面刷新时访问 -
此行为被妥善处理,与缓存无关。
#about-me被称为锚点,当提供浏览器时,设计会将页面滚动到它。 -
@lolbas 谢谢,我知道这是正确的行为,但是,我的印象是页面刷新会重新加载整个 DOM(包括样式表和脚本),因此,从原始网址。但是,页面刷新从原始 url 开始,并附加了我的页面最后滚动到的部分的 id。是否应该在页面刷新时不重置 URL?抱歉,如果我让这变得混乱。
-
我建议您将问题改为询问“如何”,而不是询问“最佳实践”或“最佳方式”。最佳实践问题会邀请基于意见的答案,因此可能会被关闭。
标签: javascript jquery html css