<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="test" style="height: 3000px"></div>
</body>
<script>
setTimeout(function () {
window.scrollTo(0, 3000)
});
//window.scrollTo(0, 3000)
</script>
</html>
1
evolify 2017-10-18 10:35:17 +08:00 via iPhone
div 高度再大点,比 3000 大,试试
|
2
2bt 2017-10-18 10:47:05 +08:00
linux + chrome 61 测试有效
|
3
2bt 2017-10-18 10:48:20 +08:00
又测了一下,无效。(尴尬
|
4
Exceptionluo OP |
5
SEARCHINGFREE 2017-10-18 13:21:05 +08:00
chrome 刷新会记住位置,用 firefox ok
|
6
SakuraKuma 2017-10-18 13:44:35 +08:00
理由如#5
而且不是没有效果,是下去了,chrome 还原回来了。 如果想关闭, 把 histroy 中的 scrollRestoration 设为 manual 就可以( chrome46+ https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration |
7
2bt 2017-10-18 17:03:35 +08:00
@SEARCHINGFREE
@SakuraKuma 大神,在上面这个基础上我又做了个测试,如果 body 高 1000px,且其中有内容的话,比如有十个<p>a</p>。 在 history.scrollRestoration ='auto'的情况下,script 为 window.scrollTo(0, 3000)。 假如滚动条是在最顶端,那么刷新时是完全没反应的。 但是如果滚动条不在顶端,刷新的时候,滚动条都会自动往下面滚动一丁点,且刷新多次,会锁定在一个地方,这个距离和浏览器视图大小有关系,也和内容多少有关系。 PS:要在本地预览,jsfiddle 上面执行都正常。 完整代码: <html> <head> <meta charset="UTF-8"> <title>Title</title> <style> body{height: 1000px} </style> </head> <body> <div> <p>a</p> <p>a</p> <p>a</p> <p>a</p> <p>a</p> </div> <script> window.scrollTo(0, 100); console.log(document.body.scrollTop); </script> </body> </html> |
8
Exceptionluo OP @2bt @SEARCHINGFREE @SakuraKuma 谢谢各位 !
确实是被浏览器还原了。 新页面初次进入是有效的额,一旦用户改变了滚动条位置之后再刷新就没有了反应。 @2bt 不过并没有你说的如果滚动条不在顶端,刷新的时候,滚动条都会自动往下面滚动一丁点情况 |