Apa cara tercepat untuk memeriksa apakah suatu elemen memiliki bilah gulir?
Satu hal tentu saja adalah memeriksa apakah elemen lebih besar dari viewport-nya, yang dapat dengan mudah dilakukan dengan memeriksa dua nilai berikut:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
tetapi itu tidak berarti bahwa ia juga memiliki scrollbar (jadi itu sebenarnya dapat di-scroll oleh manusia).
Pertanyaan
Bagaimana cara memeriksa scrollbar dalam 1 browser silang dan 2 javascript saja (seperti tidak ada jQuery )?
Hanya Javascript, karena saya memerlukan overhead sekecil mungkin, karena saya ingin menulis filter pemilih jQuery yang sangat cepat
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
Saya kira saya harus memeriksa overflow
pengaturan gaya tetapi bagaimana saya melakukannya dengan cara lintas browser?
Pengeditan tambahan
Tidak hanya overflow
pengaturan gaya. Memeriksa apakah suatu elemen memiliki scrollbar tidak sesederhana kelihatannya. Rumus pertama yang saya tulis di atas berfungsi dengan baik ketika elemen tidak memiliki perbatasan, tetapi ketika itu terjadi (terutama ketika perbatasan memiliki lebar yang cukup), offset
dimensi bisa lebih besar dari scroll
dimensi tetapi elemen masih bisa digulir. Kami sebenarnya harus mengurangi batas dari offset
dimensi untuk mendapatkan viewport aktual yang dapat digulir dari elemen dan membandingkannya dengan scroll
dimensi.
Untuk referensi di masa mendatang
:scrollable
Filter pemilih jQuery disertakan dalam .scrollintoview()
plugin jQuery saya . Kode lengkap dapat ditemukan di posting blog saya jika ada yang membutuhkannya. Meskipun tidak memberikan solusi sebenarnya, kode Soumya sangat membantu saya menyelesaikan masalah. Ini mengarahkan saya ke arah yang benar.
overflow:hidden
terpasang di atasnya? Akan ada konten berlebih tetapi masih tidak dapat di-scroll. Masalahnya sejauh ini tidak sesederhana kelihatannya.