
<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 不过并没有你说的如果滚动条不在顶端,刷新的时候,滚动条都会自动往下面滚动一丁点情况 |