防止浏览器在按下返回按钮时自动滚动至前一个位置

7
我需要防止浏览器在用户按下“返回”按钮时自动滚动到先前的滚动位置,实现方法如下:

<a href="javascript:history.go(-1)"
      onClick="javascript:history.go(-1)" title="< GO BACK"></a>

在点击该按钮后,浏览器会返回到此页面的上一个滚动位置。我希望停止这种行为并加载页面顶部。希望有人知道正确的解决方案。
- 示例 -
打开一个页面向下滚动,转到新页面并点击返回按钮,页面将自动滚动到之前滚动的位置!

1
看起来你正在使用锚点滚动。如果你想实现你的目标,就要移除锚点名称,并用JavaScript的scrollTo(或类似的)函数滚动到它们。 - Some Guy
不是这样的!只需要打开一个页面,向下滚动到一个新页面,然后点击返回按钮,页面就会自动滚动到之前滚动的位置! - phj
3个回答

1

我相当确定你所描述的行为最好归类为用户偏好之一。 (那些你不应该去篡改的东西之一)

@mrtsherman提出了一个解决方法/变通方法,但除非它严重影响了您的Web应用程序的可用性,否则我认为您应该让浏览器按照用户通常期望的方式运行(并滚动到他们离开页面时的位置)。如果您使用了这个方法,请务必给mrtsherman点赞。


1
非常感谢,之前没有看到这个黑客技巧,我会考虑在一些页面上使用它。 - phj

0

我也有同样的问题,但我还没有找到正确的解决方案,
不过我可以为这个问题给你提供一个很好的变通方法。

只需在加载下一页之前向上滚动。
当用户点击返回时,浏览器将滚动到顶部。

示例:

第一页:
<a href="page2.htm" onclick="window.scrollTo(0, 0);">下一页</a>

第二页:
<a href="page1.htm" onclick="history.go(-1); return false;">返回</a>

请注意,只有当用户选择在新窗口/标签中打开时,href="page1.htm"才会加载。

请原谅我的英语。我希望这能帮到你。


-4

我找到了更好的解决方案!

在每个页面上放置以下代码:

<script>
  setTimeout('window.scrollTo(0, 0);', 1);
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接