2011-07-14 59 views
0

我建立有許多小滾動的div(實際上,Ace編輯)的網格中的Web應用程序滾動窗口,該網格有足夠的元素,它比窗戶大。當用戶開始在空白區域滾動時,我希望他們能夠滾動窗口本身;當用戶開始在網格元素內滾動時,我希望他們在那裏滾動div內容。問題是,如果一個用戶開始滾動在空格,然後再滾動,使得它們的鼠標都要在網格元素,可滾動DIV捕獲所有的滾動事件,中斷用戶的在網流量和「俘獲」他們的網格內元件。的Javascript:不要停止,如果光標通過可滾動的div

我無法手動捕獲onmousewheel事件,因爲AFAIK無法從垂直方向捕獲水平鼠標滾輪移動,並且我希望Mac OS X上的用戶能夠在各個方向上滾動。我曾想過在第一個事件中使用JS添加一個具有非常高Z指數的隱形div,並且在一段時間內沒有觸發事件的情況下立即將其刪除。現在還沒有編碼這件事,但我不知道是否有更好的解決方案,或者如果有,我沒有想到的任何潛在的缺陷。任何幫助或建議都會很棒!謝謝!

+0

這是一種煩惱,而解決方法是更加片狀。它也改變了恕我直言從不是好事的標準行爲。 – Mrchief

回答

0

我認爲一個解決方案將是非常困難的,由於瀏覽器的支持,以及實際的解決方案,這可能是像計算滾動,回溯div和應用滾動到頁面。

可以做這樣的事情:

$('div').scroll(function(e){ 
    // figure out how much it has scrolled 
    window.scrollBy(0,howmuch); 
}); 

我不推薦,雖然有絲毫的這個解決方案,我認爲更好的辦法是設置的div溢出:隱藏;並拿起了堅實的滾動插件,並用它來定製了div滾動行爲。

相關問題