2014-02-25 94 views
2

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

此脚本在Firefox中正常工作,但在Chrome或Safari中无法正常工作。例如,在我的页面上说我有25个帖子,每个帖子都有它的形式。比方说,我提交表单上的邮政编号25(最后一个),然后当页面重新加载铬窗口滚动,但不是所有的方式#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?

+0

你能以[jsfiddle](http://jsfiddle.net/)或类似的形式提供更多上下文吗? – cazzer

+3

尝试将“.animate()”方法放在2秒的超时内。问题是否消失?如果是这样,那么它的时间问题。这很可能是因为浏览器尚未准备好滚动到您要求它滚动到的位置。 –

+0

Trunal我认为那是诀窍..你能发表回答,所以我可以接受吗? – Derek

回答

0

尝试将“.animate()”方法放在2秒的超时内。问题是否消失?如果是这样,那么它的时间问题。这很可能是因为浏览器尚未准备好滚动到您要求它滚动到的位置。

在这种情况下,您宁愿以超过2秒的超时时间进行操作。只要浏览器空闲,0超时就会为下一个周期安排滚动。

HTH!

+0

为什么不使用'$(document).load'?如果延迟加载图像,将会消除任何问题,并且您肯定会知道它会碰到正确的坐标。 – Papa