Я использую двойную прокрутку . js ( GitHub ) (v0.05 11-11-2015) и dataTables. js ( 1.10.13) библиотеки.
Изначально использование этих двух элементов выглядело следующим образом, при этом таблица создавалась / загружалась более традиционным способом построения в представлении с использованием тегов JSP. Однако, как только результаты были в середине сотен или более, произошла заметная задержка производительности, возвращающая результаты. Эта медленная страница имела как верхнюю, так и нижнюю горизонтальную полосу прокрутки.
$('.double-scroll').doubleScroll({});
$('#searchListTable').dataTable({
"info" : false,
"pageLength" : 50,
"searching" : false,
"oLanguage": {
"sLengthMenu": " _MENU_"
}
});
Поэтому, чтобы решить проблему производительности, вместо этого данные были созданы как объект и переданы непосредственно в dataTables. Это привело к тому, что таблица вышла из элемента div, в котором она находилась, и решением было переместить вызов двойной прокрутки вниз.
$('#searchListTable').dataTable({
"info" : false,
data: dataSet,
"pageLength" : 50,
"searching" : false,
"oLanguage": {
"sLengthMenu": " _MENU_"
}
});
$('.double-scroll').doubleScroll({});
Теперь проблема в том, что верхняя полоса прокрутки не отображается. Теперь он действительно существует (между верхней частью окна и количеством элементов в таблице есть пространство, плюс вы можете просмотреть код). Проблема в том, что она составляет 100% ширины страницы, поэтому, поскольку она не переполняется, она не должна появляться. Тем не менее, нижняя полоса прокрутки отображается правильно и имеет правильный размер.
Существует способ обойти это, обернув таблицу новым элементом div и установив размер 1512px (который является конечным размером таблицы), но его хаки sh и если размеры таблицы изменить (например, если выбран французский), то он больше не выполняет свою работу.
Мне нужно изменить размер одного (или нескольких) элементов div, но я не хочу полагаться на использование JavaScript или JQuery, чтобы проверить ширину таблицы и затем обновить элемент div. Мне бы просто хотелось, чтобы двойной скролл. js работал правильно.