ScrollTop无法在Chrome / Safari中使用

时间:2014-02-25 20:31:20

标签: javascript jquery html google-chrome

我在我们网站的循环中有一个表单,当有人提交表单时,会在URL中添加一个查询字符串,例如“?updated = 111”。然后我的JQuery脚本检查数字的url,并在提交表单并重新加载页面后滚动到该div。

此脚本在Firefox中运行良好,但在Chrome或Safari中无效。例如,在我的页面上说我有25个帖子,每个帖子都有其形式。让我说我在第25号帖子(最后一个)上提交表格,然后当页面重新加载chrome时,窗口滚动但不是一直到#div25有时它可以工作(对于像1-5)其他时间它只会滚动到窗户的一半。

是否有一种失败的安全方法可确保在页面刷新后窗口将滚动到该div?同样,下面的内容适用于Firefox,但仅部分适用于Chrome和Safari。

<script>
jQuery(document).ready(function($) {

    if(window.location.href.indexOf("?updated=") > -1) {
        var postID = window.location.href.match(/\d+$/);
       $('html, body').animate({
            scrollTop: $('#post-'+postID).offset().top
        }, 'fast');
    }
});
</script>

另外注意,不确定这是否有帮助但是一旦提交表单如果我点击页面上的刷新然后它滚动到正确的位置..不确定我是否应该添加延迟或加快动画来使这个像在FF中一样跨浏览器工作吗?

1 个答案:

答案 0 :(得分:0)

尝试将“.animate()”方法置于2秒的超时时间内。这个问题会消失吗?如果是,那么它的计时问题。很可能是因为浏览器还没有准备好滚动到你要求它滚动到的位置。

在这种情况下,你宁愿使用0超过2秒的超时。只要浏览器空闲,0超时就会安排下一个周期的滚动。

HTH!