Який найшвидший спосіб перевірити, чи є у елемента смуги прокрутки?
Звичайно, перевірити, чи більший елемент, ніж його вікно перегляду, що легко зробити, перевіривши ці два значення:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
але це не означає, що на ньому також є смуги прокрутки (тому насправді люди можуть прокручуватися).
Питання
Як я можу перевірити смуги прокрутки лише в 1 перехресному браузері та у 2 JavaScript (як не у jQuery )?
Тільки Javascript, тому що мені потрібно якомога менше накладних витрат, тому що я хотів би написати дуже швидкий фільтр вибору jQuery
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
Я думаю, мені доведеться перевірити overflowпараметри стилю, але як це зробити в крос-браузерному способі?
Додаткове редагування
Не тільки overflowналаштування стилю. Перевірка наявності елемента в панелі прокрутки не така тривіальна, як здається. Перша формула, яку я написав вище, добре працює, коли елемент не має межі, але коли він є (особливо коли межа має значну ширину), offsetрозмір може бути більшим за scrollрозмір, але елемент все ще може прокручуватися. Нам фактично потрібно відняти межі від offsetвиміру, щоб отримати фактичний прокручуваний огляд елемента та порівняти його з scrollвиміром.
Для подальшого ознайомлення
:scrollableФільтр вибору jQuery включений у мій .scrollintoview()плагін jQuery. Повний код можна знайти в моєму блозі, якщо комусь це потрібно. Навіть незважаючи на те, що він не надав фактичного рішення, код Soumya значно допоміг мені вирішити проблему. Це вказувало мені в правильному напрямку.
overflow:hiddenвстановлений на ньому? Зайвого вмісту буде, але його все ще не можна прокручувати. Проблема далеко не така проста, як може здатися.