2015-10-21 85 views
-1

我有UI佈局,我不想改變(它不是我的,有設計師提供給我們的)。 需求是關閉滾動條滾動tbody內容。 它完美的作品在Chrome和IE瀏覽器和事件是無法在Firefox中進行無限滾動工作,溢出:-moz-scrollbars-none

$(global.table).find('tbody').on('scroll', function() { /*AJAX load next rows*/ }); 

不過,Firefox是我stucked。溢出:-moz-scrollbars-none它不想滾動tbody內容!

我已經決定使用

$(document).on('scroll', function() { 
    if ($(document).scrollTop() + $(document).innerHeight() >= $('body').get(0).scrollHeight) { 
    global.showNextRows(); 
    } 
}); 

它的工作方式操縱的文件scrollTop的位置,但TBODY內容不滾動 - 我看不到追加行。我知道我可以使用ScrollIntoView或其他的東西,但如何以最自然的方式做到這一點?

//Called by showNextRows 
function InsertRows(data, status, xhr) { 
    var rowHeight = global.getRows().first().height(); 
    $(data).insertAfter(global.getRows().filter(':last')); 
    var takenRows = $(data).filter('tr').length; 
    if (takenRows < global.requestedTake) { 
    //$(global.table).find('tbody').off('scroll'); 
    $(document).off('scroll'); 
    } else { 
    $(document).scrollTop($(window).scrollTop() - takenRows * rowHeight); 
    } 
    Success(data, status, xhr); 
} 
+0

'溢出:-moz-滾動條,none'是已廢棄,應更換(HTTPS://developer.mozilla。 org/en/docs/Web/CSS/overflow)通過'overflow:hidden',你試過了嗎? –

+0

我不能使用overflow:hidden,因爲那麼滾動事件不會在Chrome的tbody中被觸發。無論如何,它不能解決目前Firefox的問題。 – Alexander

回答

0

我想出了下面骯髒的黑客:)

$(document).ready(function() { 
    if (navigator.userAgent.match(/firefox/i)) { 
     $(global.container).css('overflow-y', 'hidden'); 
     $(global.container).css('overflow-x', 'hidden'); 
     $(global.table).find('tbody').css('overflow-y', 'auto'); 
     $(global.table).find('tbody').css('padding-right', '16px'); 
    } 
    ... 
}