2012-10-23 75 views
1

我在Firefox瀏覽器中遇到過問題。這可能是一個錯誤,但也許有人知道一個解決方法。在下面的JSFiddle中演示了這個問題:http://jsfiddle.net/F5tdB/這已經在Firefox 12.0,15.0.1,16.0.1上測試過。Firefox滾動條重置錯誤

要解釋一下的話...你必須遵循這一系列事件:

  1. 獲取元素與overflow:auto和一些溢出的內容,然後滾動了一點;
  2. 隱藏元素(display: none);
  3. 刪除內容
  4. 顯示元素(它是空的現在)
  5. 重新添加相同的內容(它現在滾動,就像它以前)
  6. 重置scrollTop的/ scrollLeft通過Javascript爲0。

因此,內容會滾動到合適的位置,但滾動條會保持原樣,這顯然是錯誤的。

有沒有任何解決方法,這個短的刪除/重新添加元素,而不是隻是隱藏它?

回答

3

在測試中,我發現如果將scrollTop設置爲除0(或其當前值)以外的任何值,則會正確更新滾動條。然後,您可以立即將scrollTop設置爲0.

特別是當您有測試用例時,您當然應該在Bugzilla中提供一個錯誤。

+0

哦,太好了!我無法在Firefox的網站上找到它。我使用了「幫助」菜單中的「提交反饋」選項。我也會提交一個bug。 –

+0

有! https://bugzilla.mozilla.org/show_bug.cgi?id=804844 –

+0

哇,有人已經追蹤了這個bug並發現它在2006年4月開始發生了!我只希望你不必再等6年才能修好...... – Neil

0

解決辦法是添加動畫的方法,所以使用:

function resetScroll(){ 
    $(document).scrollTop(1); // removes the impression of animation 
    $('html,body').animate({scrollTop:0},'fast','linear'); 
}