【问题标题】:Can't force page to scroll to top on refresh on chrome无法强制页面在 chrome 上刷新时滚动到顶部
【发布时间】:2015-07-13 04:18:24
【问题描述】:

我正在尝试使用类似于此的内容强制页面在刷新时滚动到顶部

$(window).scrollTop(0);

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

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

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

        $(window).scrollTop(0);

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

        $(window).on('load',function(){
            $(window).scrollTop(0);
        });

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

@编辑

我尝试了$(html, body).scrollTo(0),但无法正常工作

我尝试不使用 jQuery,但什么也没发生

window.scrollTo(0,0)

我禁用了我用 Javascript 编写的所有内容,只输入了这段代码,没有任何反应。

@edit2

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

【问题讨论】:

  • html, body 上应用scrollTop() 而不是window
  • 没有。仍在向下滚动。不确定它是否忽略了代码,或者浏览器是否在页面刷新后向下滚动。我不使用任何其他滚动页面的脚本

标签: javascript jquery css scroll


【解决方案1】:

尝试使用设置超时。

类似:

var _TIMEOUT = 300
setTimeout(function(){$(window).scrollTo(0)},_TIMEOUT );

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

【讨论】:

  • 是的,这应该可以,但是当页面加载时我会做一些数学运算,我必须全部修改(因为当用户向下和向上滚动时它必须为用户准备好)
【解决方案2】:

正确答案是:

window.onbeforeunload = function () {
        window.scrollTo(0,0);
};

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

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

【讨论】:

    猜你喜欢
    • 2015-05-26
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多