首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用JavaScript/jQuery滚动到页面顶部?

如何使用JavaScript/jQuery滚动到页面顶部?
EN

Stack Overflow用户
提问于 2010-11-18 09:21:50
回答 28查看 314.8K关注 0票数 179

有没有办法用JavaScript/jQuery控制浏览器滚动?

当我将页面向下滚动到一半,然后触发重新加载时,我希望页面打包到顶部,但它却试图找到最后一个滚动位置。所以我这样做了:

代码语言:javascript
复制
$('document').ready(function() {
   $(window).scrollTop(0);
});

但没那么走运。

编辑

所以当我在页面加载后调用它们时,你的两个答案都有效-谢谢。但是,如果我只是在页面上刷新一次,浏览器就会计算并滚动到.ready事件之后的旧滚动位置(我也测试了body onload()函数)。

因此,后续的问题是,有没有一种方法可以阻止浏览器滚动到它过去的位置,或者在它完成操作后重新滚动到顶部?

EN

回答 28

Stack Overflow用户

回答已采纳

发布于 2019-11-20 07:56:09

哇,我在这个问题上晚了9年。这就是了:

将此代码添加到onload中。

代码语言:javascript
复制
// This prevents the page from scrolling down to where it was previously.
if ('scrollRestoration' in history) {
    history.scrollRestoration = 'manual';
}
// This is needed if the user scrolls down during page load and you want to make sure the page is scrolled to the top once it's fully loaded. This has Cross-browser support.
window.scrollTo(0,0);

要在窗口加载时运行它,只需像这样包装它(假设您引用了JQuery )

代码语言:javascript
复制
$(function() {
  // put the code here
});

history.scrollRestoration浏览器支持:

Chrome:支持(从46开始)

Firefox:支持(从46开始)

边缘:支持(从79开始)

IE:不支持

Opera:支持(从33开始)

Safari:受支持

对于IE,如果你想在它自动向下滚动后重新滚动到顶部,那么这对我来说是有效的:

代码语言:javascript
复制
var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
if(isIE11) {
    setTimeout(function(){ window.scrollTo(0, 0); }, 300);  // adjust time according to your page. The better solution would be to possibly tie into some event and trigger once the autoscrolling goes to the top.
} 
票数 58
EN

Stack Overflow用户

发布于 2010-11-18 09:26:10

跨浏览器、纯JavaScript解决方案:

代码语言:javascript
复制
document.body.scrollTop = document.documentElement.scrollTop = 0;
票数 330
EN

Stack Overflow用户

发布于 2010-11-18 09:23:19

You got got it -你需要在body上设置scrollTop,而不是window

代码语言:javascript
复制
$(function() {
   $('body').scrollTop(0);
});

编辑:

也许你可以在页面顶部添加一个空白锚点:

代码语言:javascript
复制
$(function() {
   $('<a name="top"/>').insertBefore($('body').children().eq(0));
   window.location.hash = 'top';
});
票数 87
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4210798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档