【问题标题】:Reset scroll position on page refresh, did't work on modern browsers在页面刷新时重置滚动位置,在现代浏览器上不起作用
【发布时间】:2019-02-03 12:58:53
【问题描述】:

我正在尝试在刷新时重置浏览器滚动位置,但显然它在现代浏览器中不起作用或不可能,我错了吗?

代码:

$(window).on('beforeunload', function() {
$('html, body').scrollTop($('#scroll-to-div-id-anchor').offset().top); });

也许我处理不当,还有其他方法可以实现吗?

我尝试了此代码的所有变体和可能的选项,但它在 Safari 和 Chrome 上不起作用(无论是在桌面上,尤其是在移动设备上)。

【问题讨论】:

  • 您想将其重置为 0 或某个特定值?
  • 我正在尝试将其重置为锚点(div id)@SergChernata,但我也尝试将其重置为“0”

标签: javascript jquery css browser scroll-position


【解决方案1】:

如果您希望页面在重新加载时移动到某个元素,预期的行为是在页面加载后将其移动到该点。如果您在页面加载之前尝试移动页面,您将不知道必须滚动到哪里,并且如果您尝试在卸载时移动它,则无法保证在重新加载后该点会被保存。

您可以在卸载时将滚动位置保存到localStorage 并尝试在加载时加载该位置,但在这种情况下,我建议您只在加载时移动页面。

$(document).ready(function() {
  $('html, body').scrollTop($('#scroll-to-div-id-anchor').offset().top);
});

【讨论】:

  • 加载时不会发生,因为浏览器会在用户点击重新加载按钮时存储最终位置(并在重新加载后恢复)@Chase I
  • @AndrewK 只要确保在加载文档后运行更改,它应该可以正常工作。您能否包含您的 HTML 和此答案不起作用的实现示例?
  • 这正是重点,它只是没有,不知道为什么,即使在“空白”测试页面上,当重新加载时,位置保持不变并且不会恢复到原来的位置正如您对代码(Safari/Chrome)所期望的那样。 @Chase I,在空白测试页上测试,我可以稍后在移动设备上添加 html
  • 好的,听起来不错。 This 回答也可能有一些优点,但我没有设置环境来进行测试。
猜你喜欢
  • 1970-01-01
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
相关资源
最近更新 更多