Javascript 禁用浏览器&x27;页面刷新后自动滚动?
有没有一种方法可以禁用某些现代浏览器(Chrome和Safari)在刷新页面时记住滚动位置的行为?不仅仅是Chrome,我认为这一切都会很好Javascript 禁用浏览器&x27;页面刷新后自动滚动?,javascript,google-chrome,scroll,Javascript,Google Chrome,Scroll,有没有一种方法可以禁用某些现代浏览器(Chrome和Safari)在刷新页面时记住滚动位置的行为?不仅仅是Chrome,我认为这一切都会很好 window.onload = function () { window.scrollTo(0, 0); }; 更新您的问题后: 我认为如果我们使用一些cookie或会话存储会更好。文档准备好后,您是否尝试过启动此功能 $(document).ready(function(){ window.scrollTo(0, 0); }); 如果
window.onload = function () {
window.scrollTo(0, 0);
};
更新您的问题后:
我认为如果我们使用一些cookie或会话存储会更好。文档准备好后,您是否尝试过启动此功能
$(document).ready(function(){
window.scrollTo(0, 0);
});
如果这不起作用
$(document).ready(function(){
setTimeout(function(){
window.scrollTo(0, 0);
}, 1);
});
这将把它推到调用堆栈的底部而不是希望setTimout在堆栈的底部结束-我宁愿强制它,我们点击我们想要的滚动位置。我仍然认为这是一个黑客,我希望我们可以绑定到某种浏览器事件。
var scrollToYPos = 100;
var interval = setInterval(checkPos, 0);
function checkPos() {
if ($(window).scrollTop() == scrollToYPos) {
clearInterval(interval);
} else {
window.scrollTo( 0, scrollToYPos );
checkPos();
}
}
我遇到了同样的问题。以下是我提出的基本解决方案:
// scroll the user to the comments section if we need to
wt = win.scrollTop();
wb = wt + win.height();
// if scroll position is 0, do this (it's a fresh user), otherwise
// the browser is likely to resume the user's scroll position, in
// which case we don't want to do this
yab.loaded().done(function() {
// it seems that browsers (consistently) set the scroll position after
// page load. Accordingly wait a 1/4 second (I haven't tested this to the lowest
// possible timeout) before triggering our logic
setTimeout(function() {
// if the window top is 0, scroll the user, otherwise the browser restored
// the users scroll position (I realize this fails if the users scroll position was 0)
if(wt === 0) {
p = self.container.offset().top;
if(wb != p) {
win.scrollTop(p - th - 20);
}
}
}, 250);
});
我认为最简单的方法是诱使浏览器重新加载它认为是新页面的内容
window.location = window.location
我测试过的所有浏览器都是一致的。我个人会远离onload回调,因为它们会在加载过程中导致跳转,这在视觉上不太吸引人。对于支持history.scrollRestoration的浏览器,可以关闭自动滚动行为:
if ('scrollRestoration' in history) {
history.scrollRestoration = 'manual';
}
来源:您为什么要这样做?回到那个位置是一种很好的用户体验。@putvande 100%同意大多数情况,但一个用例是当有大量数据将新数据添加到顶部时,尽管我们可以动态更新数据,但如果用户出于任何原因刷新,我们不希望将其恢复到原来的滚动位置。考虑到这种体验,从他们的角度来看,这不是预期的行为——而且这只是一个用例,还有其他一些用例也存在。任何使用无限滚动进行加载体验的页面都会出现这种情况(意外)问题。这也是我的想法——但我在这种回调中没有任何运气——似乎chrome会在onload启动后自动滚动。噢,
yab。loaded
是一个承诺,一旦加载窗口就会得到解决。相当于$(window).load(function(){/…})因为这仍然是一个实验性质,有人知道浏览器支持吗?太棒了,正是我所需要的。在我的例子中,我正在处理一个角度SPA应用程序,并且正在努力保持滚动位置。在路由器有机会导航之前,浏览器将恢复上一个组件的滚动位置,从而导致跳跃式滚动。哦,那些讨厌的浏览器…大多数浏览器都支持它