我在这里拔头发。 Chrome浏览器有一个令人讨厌的习惯,当您加载以前查看的页面时,它会记住页面滚动位置。对于我的Web应用程序来说,这是非常不希望的,但是无论如何,我都无法阻止Chrome这样做。我的测试环境是在装有Chrome的Linux Ubuntu虚拟机上。我开发了一种hack,它在页面加载后等待大约600毫秒,然后手动将滚动位置设置到页面顶部,但这使页面加载时间似乎比必须的要长600毫秒。这是我可行的技巧
// hide the whole document, then show it after delay
$('#iContainer').addClass('cDispHide')
setTimeout(function(){
window.scrollTo(0, 0);
$('#iContainer').removeClass('cDispHide');
}, 600 );
在网上做了一些研究之后,这就是我尝试过的一切
我将它放在包括jQuery之前的脚本标签中
if ('scrollRestoration' in history) {
history.scrollRestoration = 'manual';
}
在chrome上,应该禁用此滚动内存行为,但不会这样做,不会产生影响。也许我把它放错了地方?
将此内容卸载:
window.addEventListener('unload', function(e){
document.body.style.display = 'none';
});
应该会禁用此行为,但不会。我已经将此代码放在jquery $(window).load()函数中,它没有任何作用。我也尝试过在卸载时将window.scrollTo(0,0)设置为无效
我已经尝试过
document.location = "#";
在$(window).load()和$(document).ready()里面,这应该告诉浏览器将其加载到页面顶部,但是即使在我的地址中放置了“#”也没有作用酒吧
我什至注意到,如果我用鼠标滚动到页面顶部,然后离开页面,然后返回页面,由于某种原因,它会将我带到页面中间。它不记得我的滚动到顶部,就像它记得很久以前的某个滚动位置一样。在我的代码中没有什么可以做到这一点。
任何对此的帮助将不胜感激。谢谢
答案 0 :(得分:0)
Argh
对不起,尽管我声称我没有设置页面,但是它被深埋在一些旧代码中,并且实际上是在我正在使用的某些外部库中完成的,因此很难检测到,但是在听我自己的问题是,它似乎还被其他人记住了,这让我看上去更加难过,是的,的确是手动将其设置为一个位置。
一旦我解决了这个问题,只需添加
$(html,body).scrollTop(0)
在文档加载中有效。它确实需要一个非常短的超时,例如20ms。如果您也想记住该页面,也可以将离开页面时的滚动位置设置为0。感谢所有考虑我的问题的人