无法在Chrome上刷新时强制页面滚动到顶部

Vic*_*ira 4 javascript css jquery scroll

我试图强制页面滚动到顶部刷新与类似的东西

$(window).scrollTop(0);
Run Code Online (Sandbox Code Playgroud)

但它似乎发生在自动向下滚动刷新之前.我的脚本运行,然后浏览器恢复其最后位置.

我在这样的几个地方运行代码

        $(function(){
            $(window).scrollTop(0);
        });

        $(window).scrollTop(0);

        $(document).ready(function(){
            $(window).scrollTop(0);
        });

        $(window).on('load',function(){
            $(window).scrollTop(0);
        });
Run Code Online (Sandbox Code Playgroud)

同时发生同样的事情.我是否必须将此代码放在其他地方?将JS加载到HTML的特定部分?纯JS或jQuery还有什么可以帮助我解决这个问题吗?

@编辑

我尝试过$(html, body).scrollTo(0)并且无法使其正常工作

我试过没有jQuery,什么也没发生

window.scrollTo(0,0)
Run Code Online (Sandbox Code Playgroud)

我禁用了我用Javascript编写的所有内容,只放了这段代码而没有任何反应.

@ EDIT2

我以前遇到过这个问题,我确信我已经setTimeout用@ raam86的建议解决了这个问题.问题是我在页面加载时做了一些数学运算,这必须在用户开始向上和向下滚动之前完成

xox*_*xel 10

正确的答案是:

window.onbeforeunload = function () {
        window.scrollTo(0,0);
};
Run Code Online (Sandbox Code Playgroud)

因为Chrome和其他浏览器在卸载之前"记住"了最后一个滚动位置,所以如果在卸载页面之前将值设置为0,0它们将记住0,0并且不会回滚到滚动条所在的位置:)

刚刚超过所有页面的控制器,它们将在重新加载/刷新/其他时滚动到顶部


raa*_*m86 0

尝试使用设置超时。

就像是:

var _TIMEOUT = 300
setTimeout(function(){$(window).scrollTo(0)},_TIMEOUT );
Run Code Online (Sandbox Code Playgroud)

这有望在 chrome 滚动后触发。如果它不尝试摆弄超时