Bir öğenin kaydırma çubuklarına sahip olup olmadığını kontrol etmenin en hızlı yolu nedir?
Elbette bir şey, öğenin görüntü alanından daha büyük olup olmadığını kontrol etmektir; bu, bu iki değeri kontrol ederek kolayca yapılabilir:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
ancak bu, kaydırma çubuklarına sahip olduğu anlamına gelmez (yani aslında insanlar tarafından kaydırılabilir).
Soru
Kaydırma çubuklarını 1 çapraz tarayıcıda ve 2 javascript'te ( jQuery olmadığı gibi ) nasıl kontrol ederim ?
Yalnızca Javascript, çünkü olabildiğince küçük ek yüke ihtiyacım var, çünkü çok hızlı bir jQuery seçici filtresi yazmak istiyorum
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
Sanırım overflowstil ayarlarını kontrol etmem gerekecek ama bunu tarayıcılar arası bir şekilde nasıl yapabilirim?
Ek düzenleme
Sadece overflowstil ayarları değil . Bir öğenin kaydırma çubuğuna sahip olup olmadığını kontrol etmek göründüğü kadar önemsiz değildir. Yukarıda yazdığım ilk formül, öğenin bir sınırı olmadığında iyi çalışıyor, ancak varsa (özellikle kenarlık önemli ölçüde geniş olduğunda), offsetboyut boyuttan daha büyük olabilir , scrollancak öğe yine de kaydırılabilir. Biz aslında dan sınırları çıkarmak zorunda offsetelemanın gerçek kaydırılabilir viewport almak için boyut ve ile karşılaştırabilirsiniz scrollboyutta.
Gelecekte referans olması için
:scrollablejQuery seçici filtresi, .scrollintoview()jQuery eklentimde yer alıyor. Herhangi birinin ihtiyacı olursa tam kod blog yazımda bulunabilir . Gerçek çözümü sağlamasa da Soumya'nın kodu sorunu çözmeme önemli ölçüde yardımcı oldu. Beni doğru yönü gösterdi.
overflow:hiddenüzerine oturduysa? Fazla içerik olabilir, ancak yine de kaydırılamaz. Sorun göründüğü kadar basit değil.