Проверить, есть ли у HTML-элемента полосы прокрутки

Какой самый быстрый способ проверить, есть ли у элемента полосы прокрутки?

Одно, конечно же, это проверка того, больше ли элемент, чем его область просмотра, что можно легко сделать, проверив эти два значения:

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 значительно помог мне решить проблему. Это указывало мне в правильном направлении.

101
задан Robert Koritnik 28 November 2013 в 09:32
поделиться