Chrome尝试在302重定向后保持滚动位置?

时间:2014-02-21 19:13:57

标签: javascript html google-chrome

我注意到Chrome会在302重定向后尝试保持滚动位置。

例如,给定一个这样的页面:

<html>
  <body>
    <p>Please wait...</p>
    <script>setTimeout(function() { window.reload(true); }, 1000)</script>
  </body>
</html>

如果在重新加载时,服务器将HTTP 302重定向返回到具有锚点的页面:

Location: /some-other-page.html#some-anchor

浏览器将正确向下滚动到锚点,但一旦页面加载,Chrome就会向上滚动到页面顶部。我相信这是因为它试图保持滚动位置(例如,使用后退/前进按钮时)。

注意:此似乎与HTTP重定向一起发生;将原始页面中的JavaScript更改为:

window.location.href = "/some-other-page.html#some-anchor"

按预期工作(Chrome滚动到锚点,然后停留在那里)。

这里发生了什么?有没有办法避免这种行为(即,我可以安全地使用带有重定向的锚点)?

(注意:我意识到页面重新加载到重定向有点奇怪,我已经能够解决我的应用程序的问题...但我想知道发生了什么,以避免这种情况未来的问题)

0 个答案:

没有答案