Was ist der schnellste Weg, um zu überprüfen, ob ein Element Bildlaufleisten hat?
Eine Sache ist natürlich, zu überprüfen, ob das Element größer als sein Ansichtsfenster ist, was leicht durch Überprüfen dieser beiden Werte erreicht werden kann:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
Das bedeutet aber nicht, dass es auch Bildlaufleisten gibt (so dass es tatsächlich von Menschen gescrollt werden kann).
Frage
Wie suche ich in einem 1- Cross-Browser und 2- Javascript (wie in keiner jQuery ) nach Bildlaufleisten ?
Nur Javascript, weil ich so wenig Overhead wie möglich benötige, weil ich einen sehr schnellen jQuery-Auswahlfilter schreiben möchte
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
Ich müsste wohl nach Stileinstellungen overflow
suchen, aber wie mache ich das browserübergreifend?
Zusätzliche Bearbeitung
Nicht nur overflow
Stileinstellungen. Zu überprüfen, ob ein Element eine Bildlaufleiste hat, ist nicht so trivial, wie es scheint. Die erste Formel, die ich oben geschrieben habe, funktioniert einwandfrei, wenn das Element keinen Rand hat, aber wenn dies der Fall ist (insbesondere wenn der Rand eine beträchtliche Breite hat), offset
kann die scroll
Bemaßung größer als die Bemaßung sein, das Element kann jedoch weiterhin scrollbar sein. Wir müssen tatsächlich Ränder von der offset
Dimension subtrahieren , um das tatsächliche scrollbare Ansichtsfenster des Elements zu erhalten und dieses mit der scroll
Dimension zu vergleichen .
Zum späteren Nachschlagen
:scrollable
Der jQuery-Auswahlfilter ist in meinem .scrollintoview()
jQuery-Plugin enthalten. Den vollständigen Code finden Sie in meinem Blog-Beitrag, falls jemand ihn benötigt. Obwohl es nicht die eigentliche Lösung lieferte, half mir Soumyas Code erheblich, das Problem zu lösen. Es zeigte mir in die richtige Richtung.
overflow:hidden
gesetzt hat? Es würde überschüssigen Inhalt geben, aber es ist immer noch nicht scrollbar. Das Problem ist bei weitem nicht so einfach, wie es scheinen mag.