Какой самый быстрый способ проверить, есть ли у элемента полосы прокрутки?
Конечно, нужно проверить, больше ли элемент, чем его область просмотра, что можно легко сделать, проверив эти два значения:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
но это не значит, что у него также есть полосы прокрутки (так что на самом деле они могут прокручиваться людьми).
Вопрос
Как проверить полосы прокрутки в 1 кросс-браузер и 2 только путь javascript (как в no jQuery )?
только Javascript, потому что мне нужны как можно меньшие накладные расходыПотому что я хотел бы написать очень быстрый фильтр селектора jQuery
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
Полагаю, мне нужно было бы проверить настройки стиля overflow
, но как мне это сделать кросс-браузерным способом?
Дополнительное редактирование
Не только overflow
настройки стиля.Проверка наличия у элемента полосы прокрутки не так тривиальна, как кажется.Первая формула, которую я написал выше, работает хорошо, когда элемент не имеет границы, но когда он имеет (особенно когда граница имеет значительную ширину), размер offset
может быть больше, чем размер scroll
, но элемент все еще можетбыть прокручиваемымНа самом деле нам нужно вычесть границы из измерения offset
, чтобы получить фактический прокручиваемый видовой экран элемента и сравнить его с размером scroll
.
Для дальнейшего использования
:scrollable
jQuery filter selectorвходит в мой плагин .scrollintoview()
jQuery.Полный код можно найти в моем блоге , если кому-то это нужно.Несмотря на то, что он не дал реального решения, код Soumya значительно помог мне решить проблему.Он указал мне правильное направление.