2014-02-25 92 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