2011-08-30 56 views
4

我有一個水平滾動div部分裏面。我正在使用Ariel Flesler's scrollTo插件從一個部分滾動到另一個部分。當溢出被「隱藏」時停止Firefox重置水平滾動位置?

請參閱:http://jsfiddle.net/carienf/qZeEe/

小提琴完美的作品在IE 9,Safari瀏覽器5.1,歌劇11.5和Chrome 14(所有的最新版本)。我可以點擊一個鏈接滾動到相應的部分並滾動或滾動鼠標滾輪。

問題: 在Firefox 7(或更早),當我已經滾動到第2或第3節,然後使用滾動條,我的位置復位到所述第一部分向下滾動。調整瀏覽器窗口大小時也會發生這種情況。如果我使用鼠標滾輪滾動,Firefox的行爲(換句話說,我留在當前部分)。

我的問題是相當多的這個問題的確切重複:Problem mixing overflow-x, FireFox, and Javascript

只,公認的答案(這是允許的水平滾動條是可見的),我的具體情況下不能正常工作。此外,發佈該問題的人已經刪除了他的例子。我真的需要該滾動條保持隱藏狀態,我真的不喜歡將它隱藏在div後面的想法。

有沒有辦法(除了設置溢出爲「自動」)停止Firefox重置我的滾動位置?或者其他方式來隱藏滾動條?

UPDATE:將Firefox更新爲8.0(仍爲測試版),然後其行爲與其他瀏覽器一致。

+0

我在Chrome 14中查看了您的示例,並且位置也滾動回頂端(如FF)。 –

+1

我可以看到幾個選項。 1.剪下滾動條。採取一些措施,你必須絕對定位。 2.在垂直滾動之外添加第二個div。這違反了目前的代碼,但它確實解決了滾動問題。 http://jsfiddle.net/s2YFM/ – Hemlock

+0

@vantrung -cuncon。我不確定你是什麼意思。你說:「...在Chrome 14中,位置滾動回頂端......」。你是指垂直滾動嗎? Chrome 14何時滾動到「頂部」?我已經在Chrome 14中測試了小提琴,它的行爲正確。我的問題是當我處於第2節或第3節時,我的* horizo​​ntal *位置重置爲第一部分,然後在FF中使用滾動條。在Chrome 14中,我的水平位置僅在單擊部分鏈接之一時發生變化,這是所需的行爲。 – cfouche

回答

1

我可以看到幾個選項。

  1. 剪掉滾動條。採取一些措施,你必須絕對定位。
  2. 在垂直滾動之外添加第二個div。這違反了目前的代碼,但它確實解決了滾動問題。 jsfiddle.net/s2YFM
0

我剛碰到同樣的問題。當我的「模式窗口」彈出時,我設置了html.noscroll { overflow: hidden },這不幸導致窗口滾動到頂部。

這裏是唯一的解決辦法,我可以做的工作:

function RemoveScrollbar(html) { 
    var scrollTop = html.scrollTop; 
    html.addClass('noscroll'); 
    html.scrollTop = scrollTop; 
} 

這是MooTools的代碼,但超級簡單轉換爲jQuery的或其他框架。