有没有办法用JavaScript/jQuery控制浏览器滚动?
当我将页面向下滚动到一半,然后触发重新加载时,我希望页面打包到顶部,但它却试图找到最后一个滚动位置。所以我这样做了:
$('document').ready(function() {
$(window).scrollTop(0);
});
但没那么走运。
编辑
所以当我在页面加载后调用它们时,你的两个答案都有效-谢谢。但是,如果我只是在页面上刷新一次,浏览器就会计算并滚动到.ready
事件之后的旧滚动位置(我也测试了body onload()函数)。
因此,后续的问题是,有没有一种方法可以阻止浏览器滚动到它过去的位置,或者在它完成操作后重新滚动到顶部?
发布于 2019-11-20 07:56:09
哇,我在这个问题上晚了9年。这就是了:
将此代码添加到onload中。
// 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 )
$(function() {
// put the code here
});
history.scrollRestoration浏览器支持:
Chrome:支持(从46开始)
Firefox:支持(从46开始)
边缘:支持(从79开始)
IE:不支持的
Opera:支持(从33开始)
Safari:受支持
对于IE,如果你想在它自动向下滚动后重新滚动到顶部,那么这对我来说是有效的:
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.
}
发布于 2010-11-18 09:26:10
跨浏览器、纯JavaScript解决方案:
document.body.scrollTop = document.documentElement.scrollTop = 0;
发布于 2010-11-18 09:23:19
You got got it -你需要在body
上设置scrollTop
,而不是window
$(function() {
$('body').scrollTop(0);
});
编辑:
也许你可以在页面顶部添加一个空白锚点:
$(function() {
$('<a name="top"/>').insertBefore($('body').children().eq(0));
window.location.hash = 'top';
});
https://stackoverflow.com/questions/4210798
复制相似问题