Какой самый быстрый способ проверить, есть ли у элемента полосы прокрутки?
Одно, конечно же, это проверка того, больше ли элемент, чем его область просмотра, что можно легко сделать, проверив эти два значения:
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")
Я полагаю, мне придется проверить настройки стиля переполнения
, но как мне это сделать в кросс-браузере?
Не только переполнение
настройки стиля. Проверить, есть ли у элемента полоса прокрутки, не так тривиально, как кажется. Первая формула, которую я написал выше, отлично работает, когда элемент не имеет границы, но когда это происходит (особенно когда граница имеет значительную ширину), размер смещения
может быть больше, чем размер прокрутки
, но элемент все равно можно прокручивать. На самом деле нам нужно вычесть границы из измерения смещения
, чтобы получить фактическое прокручиваемое окно просмотра элемента и сравнить его с размером scroll
.
: scrollable
] Фильтр селектора jQuery включен в мой .scrollintoview ()
плагин jQuery. Полный код можно найти в моем сообщении в блоге , если он кому-нибудь понадобится. Несмотря на то, что он не предлагал фактического решения, код Soumya значительно помог мне решить проблему. Это указывало мне в правильном направлении.