यह जांचने का सबसे तेज़ तरीका है कि क्या किसी तत्व ने बार को स्क्रॉल किया है?
निश्चित रूप से एक चीज यह जांच रही है कि क्या तत्व अपने व्यूपोर्ट से बड़ा है, जो इन दो मूल्यों की जांच करके आसानी से किया जा सकता है:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
लेकिन इसका मतलब यह नहीं है कि इसमें स्क्रॉलबर्स भी हैं (इसलिए यह वास्तव में मनुष्यों द्वारा स्क्रॉल किया जा सकता है)।
सवाल
मैं केवल 1 क्रॉस ब्राउज़र और 2 जावास्क्रिप्ट में स्क्रॉलबार के लिए कैसे जांच कर सकता हूं (जैसा कि कोई jQuery के रूप में )?
जावास्क्रिप्ट केवल, क्योंकि मुझे यथासंभव छोटे ओवरहेड की आवश्यकता है, क्योंकि मैं बहुत तेज़ jQuery चयनकर्ता फ़िल्टर लिखना चाहता हूं
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
मुझे लगता है कि मुझे overflowस्टाइल सेटिंग्स की जांच करनी होगी लेकिन मैं इसे क्रॉस ब्राउज़र तरीके से कैसे करूं?
अतिरिक्त संपादन
केवल overflowस्टाइल सेटिंग्स ही नहीं । यह जाँचना कि क्या किसी तत्व में स्क्रॉलबार उतना तुच्छ नहीं है जितना लगता है। पहला सूत्र जो मैंने ऊपर लिखा है वह ठीक काम करता है जब तत्व में सीमा नहीं होती है, लेकिन जब यह होता है (विशेषकर जब सीमा काफी चौड़ाई की होती है), offsetआयाम आयाम से बड़ा हो सकता है scrollलेकिन तत्व अभी भी स्क्रॉल करने योग्य हो सकता है। हमें वास्तव offsetमें तत्व से वास्तविक स्क्रॉल करने योग्य व्यूपोर्ट प्राप्त करने के लिए आयाम से सीमाओं को घटाना होगा और उस scrollआयाम से तुलना करनी होगी ।
आगामी संदर्भ के लिए
:scrollablejQuery चयनकर्ता फ़िल्टर मेरे .scrollintoview()jQuery प्लगइन में शामिल है । मेरे ब्लॉग पोस्ट में पूरा कोड पाया जा सकता है अगर किसी को इसकी आवश्यकता है। हालांकि यह वास्तविक समाधान प्रदान नहीं करता था लेकिन सौम्या के कोड ने मुझे समस्या को हल करने में काफी मदद की। इसने मुझे सही दिशा में इशारा किया।
overflow:hiddenपर सेट है? अतिरिक्त सामग्री होगी, लेकिन यह अभी भी स्क्रॉल करने योग्य नहीं है। समस्या यह है कि यह जितना आसान लग सकता है उतना दूर नहीं है।