ब्राउज़र विंडो के scrollTop का पता लगाने के लिए सबसे अच्छा क्रॉस-ब्राउज़र तरीका क्या है? मैं किसी पूर्व-निर्मित कोड पुस्तकालयों का उपयोग नहीं करना पसंद करता क्योंकि यह एक बहुत ही सरल लिपि है, और मुझे उस सभी डेडवेट की आवश्यकता नहीं है।स्क्रॉल का पता लगाने के लिए क्रॉस-ब्राउजर विधि ब्राउज़र विंडो का टॉप
उत्तर
function getScrollTop(){
if(typeof pageYOffset!= 'undefined'){
//most browsers except IE before #9
return pageYOffset;
}
else{
var B= document.body; //IE 'quirks'
var D= document.documentElement; //IE with doctype
D= (D.clientHeight)? D: B;
return D.scrollTop;
}
}
alert(getScrollTop())
आप सभी मुसीबत ऐसे jQuery या mootools है कि एक लाइन (पार ब्राउज़र) mootools में अपनी $ ('तत्व') में इन सभी मूल्यों की गणना करता है के रूप में एक ढांचे का उपयोग बचाने के लिए getTop()।; jquery में आपको आयाम नामक एक प्लगइन की आवश्यकता होगी यदि मुझे सही ढंग से याद है, हालांकि अधिकांश समय ढांचे के बिना भी आप element.getScrollTop() का उपयोग कर सकते हैं; उस तत्व के लिए पूर्ण सीएसएस विशेषता: तुम क्या आवश्यकता होगी समस्या सिर्फ IE7 पर और इस गणना से कम है कुछ हद तक गाड़ी है, क्योंकि यह नहीं उदाहरण के लिए विचार में तत्व की स्थिति को मान ले नहीं करता है अगर आप एक स्थिति मिल पाने के लिए गणना, आप एक पूरे JavaScript लाइब्रेरी शामिल करने के लिए नहीं करना चाहते हैं उस तत्व
एफवाईआई - सवाल बताता है "मैं किसी पूर्व-निर्मित कोड पुस्तकालयों का उपयोग नहीं करना पसंद करता हूं"। आपको चिह्नित किया गया है क्योंकि mooTools अभी भी एक पूर्व-निर्मित कोड लाइब्रेरी है। योगदान देने के लिए समय निकालने के लिए धन्यवाद, बस प्रश्न को थोड़ा और अच्छी तरह से पढ़ें या आपका प्रतिनिधि हिट – iancrowther
भी ले जाएगा, इस दृष्टिकोण के साथ एक और समस्या यह है कि यदि आप इसे मुख्य विंडो स्क्रॉलबार, गैर-आईई ब्राउज़र के लिए पहचानने का प्रयास कर रहे हैं
तत्व स्क्रॉल करेगा और आईई स्क्रॉल करेगा। तो, आपको यह पता लगाना होगा कि 'तत्व' पहले क्या है। –की मूल तत्व पर किया जाता है तो आप अक्सर बिट्स आप एक से चाहते निकाल सकते हैं।
उदाहरण के लिए, इस अनिवार्य रूप से कैसे jQuery implements एक क्रॉस-ब्राउज़र पुस्तक है (ऊपर | बाएं):
function getScroll(method, element) {
// The passed in `method` value should be 'Top' or 'Left'
method = 'scroll' + method;
return (element == window || element == document) ? (
self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||
(browserSupportsBoxModel && document.documentElement[method]) ||
document.body[method]
) : element[method];
}
getScroll('Top', element);
getScroll('Left', element);
नोट: आप देखेंगे कि इसके बाद के संस्करण कोड एक browserSupportsBoxModel
चर जो अपरिभाषित है शामिल हैं। jQuery defines this अस्थायी रूप से पृष्ठ पर एक div जोड़कर और फिर कुछ विशेषताओं को मापने के लिए यह निर्धारित करने के लिए कि ब्राउज़र सही ढंग से बॉक्स मॉडल लागू करता है या नहीं। जैसा कि आप आईई के लिए इस ध्वज जांच की कल्पना कर सकते हैं। विशेष रूप से, यह IE 6 or 7 in quirks mode के लिए जांचता है। चूंकि पता लगाने के बजाय जटिल है, मैंने इसे आपके लिए एक अभ्यास के रूप में छोड़ दिया है ;-), मान लीजिए कि आप पहले से ही browserfeaturedetection अपने कोड में कहीं और इस्तेमाल कर चुके हैं।
संपादित करें: आप पहले से ही अनुमान लगाया नहीं किया है, मैं दृढ़ता से आप चीजों के इन प्रकार के लिए एक पुस्तकालय का उपयोग सुझाव देते हैं। ओवरहेड मजबूत और भविष्य के सबूत कोड के लिए भुगतान करने के लिए एक छोटी सी कीमत है और कोई भी क्रॉस-ब्राउज़र ढांचे के निर्माण के लिए अधिक उत्पादक होगा। (आईई के खिलाफ अपने सिर को टक्कर लगी अनगिनत घंटे खर्च करने के विरोध में)।
YUI 2.8.1 कोड इस करता है:
function getDocumentScrollTop(doc)
{
doc = doc || document;
//doc.body.scrollTop is IE quirkmode only
return Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);
}
मैं jQuery 1.4.2 कोड (एक सा मनुष्य के लिए अनुवाद) और मैं मान समझा यह ठीक करता है इस बारे में सोच:
function getDocumentScrollTop(doc)
{
doc = doc || document;
win = doc.defaultView || doc.parentWindow; //parentWindow is for IE < 9
result = 0;
if("pageYOffset" in win) //I'don't know why they use this, probably they tested it to be faster than doing: if(typeof win.pageYOffset !== 'undefined')
result = win.pageYOffset;
else
result = (jQuery.support.boxModel && document.documentElement.scrollTop) ||
document.body.scrollTop;
return result;
}
दुर्भाग्यवश jQuery.support.boxModel
का मूल्य निकालने लगभग असंभव है क्योंकि आप करने के लिए होगा दस्तावेज़ में एक अस्थायी बाल तत्व जोड़ें और एक ही परीक्षण jQuery करता है।
function getSize(method) {
return document.documentElement[method] || document.body[method];
}
getSize("scrollTop");
क्रोम/सफारी/फ़ायरफ़ॉक्स और आईई 9 में अच्छी तरह से परीक्षण किया गया, धन्यवाद! – mkoistinen
या सिर्फ सरल रूप में:
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
आईपैड और संभवतः अन्य डिवाइस/ब्राउज़रों (क्रोम?) पर काम नहीं करेगा, आपको वहां 'window.pageYOffset' की आवश्यकता होगी। – Yeti
यह क्रॉस ब्राउज़र नहीं है। – Progo
* मोबाइल * सफारी 5 और 7, फ़ायरफ़ॉक्स 31, क्रोम 37, ओपेरा 24, आईई 5-11 में मेरे लिए काम करता है। Http://www.quirksmode.org/dom/w3c_cssom.html#t35 के अनुसार यह * इतना * क्रॉस-ब्राउज़र है। इसलिए आपका धन्यवाद! Short'n'easy। – flu
मैं इसके लिए किया गया काफी देर जानते के बाद से इस सूत्र अद्यतन किया गया था, लेकिन यह एक समारोह मुझे लगता है कि डेवलपर्स के मूल तत्व को खोजने के लिए अनुमति देता है बनाया है कि वास्तव में मेजबान एक काम कर रहा है "scrollTop" संपत्ति। मैक ओएस एक्स (10.9 के लिए क्रोम 42 और फ़ायरफ़ॉक्स 37 पर परीक्षण किया गया।5):
function getScrollRoot(){
var html = document.documentElement, body = document.body,
cacheTop = ((typeof window.pageYOffset !== "undefined") ? window.pageYOffset : null) || body.scrollTop || html.scrollTop, // cache the window's current scroll position
root;
html.scrollTop = body.scrollTop = cacheTop + (cacheTop > 0) ? -1 : 1;
// find root by checking which scrollTop has a value larger than the cache.
root = (html.scrollTop !== cacheTop) ? html : body;
root.scrollTop = cacheTop; // restore the window's scroll position to cached value
return root; // return the scrolling root element
}
// USAGE: when page is ready: create a global variable that calls this function.
var scrollRoot = getScrollRoot();
scrollRoot.scrollTop = 10; // set the scroll position to 10 pixels from the top
scrollRoot.scrollTop = 0; // set the scroll position to the top of the window
मुझे आशा है कि आपको यह उपयोगी लगेगा! चीयर्स।
मैं window.scrollY || document.documentElement.scrollTop
का उपयोग कर रहा हूं।
window.scrollY
आईईएस को छोड़कर सभी ब्राउज़रों को शामिल करता है।
document.documentElement.scrollTop
आईई शामिल हैं।
पहली अभिव्यक्ति 'window.pageYOffset' भी हो सकती है। मैं इसका जिक्र करता हूं क्योंकि 'पेज वाई ऑफसेट' अधिक ऐतिहासिक लगता है, और मुझे अक्सर 'स्क्रॉल वाई' दिखाई नहीं देता है। एमडीएन के मुताबिक, वे वही हैं। किसी भी मामले में, यह अब तक का सबसे साफ और सबसे प्रत्यक्ष समाधान है, और इसे प्राथमिकता दी जानी चाहिए क्योंकि यह पहले आधुनिक ब्राउज़र को संबोधित करती है, इस प्रकार उन्हें अद्यतित होने के लिए दंडित नहीं किया जाता है। – Manngo
@ जेसन: मेरा मतलब यह था कि मैं ऊपर दिए गए अपनी टिप्पणी के बजाय सबसे साफ और सबसे प्रत्यक्ष प्रश्न के उत्तर के बारे में बात कर रहा था। – Manngo
यह आईई 5 से IE11 तक अच्छी तरह से काम करता है। यह सभी प्रमुख नए ब्राउज़रों का भी समर्थन करता है।
var scrollTop = (document.documentElement && document.documentElement.scrollTop) ||
(document.body.scrollTop) || (document.scrollingElement);
- 1. jQuery ब्राउज़र का पता लगाने?
- 2. jQuery स्क्रॉल() का पता लगाने के उपयोगकर्ता स्क्रॉल
- 3. का पता लगाने FlowDocument बदलें और स्क्रॉल
- 4. अंतर-विंडो संचार के लिए ब्राउज़र समर्थन का पता लगाएं
- 5. PHP मोबाइल ब्राउज़र का पता लगाने?
- 6. ब्राउज़र का पता लगाने के लिए कैसे जावास्क्रिप्ट
- 7. ब्राउज़र विंडो का पता लगाएं जावास्क्रिप्ट
- 8. हर विधि का पता लगाने के लिए कैसे
- 9. ब्राउज़र का समर्थन निर्दिष्ट सीएसएस छद्म-वर्ग का पता लगाने के लिए कैसे पता लगाएं?
- 10. का पता लगाने जब स्क्रॉल [jQuery के बिना]
- 11. WPF: का पता लगाने के लिए Ctrl + MWheelUp/नीचे
- 12. रीढ़ मार्गों - ब्राउज़र का पता लगाने के वापस बटन प्रेस
- 13. माउस समर्थन का पता लगाने
- 14. का पता लगाने के लिए Ctrl +
- 15. नीचे उपयोगकर्ता स्क्रॉल का पता लगाने या jQuery में
- 16. आवाज का पता लगाने
- 17. jQuery में क्षैतिज स्क्रॉलिंग का पता लगाने के लिए कैसे?
- 18. ईमेल क्लाइंट का पता लगाने
- 19. ब्राउज़र समर्थन iframe का पता लगाने के लिए कैसे पता लगाएं?
- 20. चिपमंक टकराव का पता लगाने
- 21. फेसबुक मोबाइल ब्राउज़र का पता लगाने अक्षम करें?
- 22. माउस सूचक का पता लगाने
- 23. का पता लगाने जब जावास्क्रिप्ट ASP.NET
- 24. स्मृति रिसाव का पता लगाने के लिए CppUnit का उपयोग
- 25. संपत्ति प्रकार का पता लगाने के लिए PropertyInfo का उपयोग
- 26. ऑटोबॉक्सिंग का पता लगाने के लिए उपकरण का निर्माण?
- 27. UIScrollView स्थिति का पता लगाने
- 28. रूबी गणनीय रिवर्स का पता लगाने के
- 29. जेएफआरएएम का पता लगाने के लिए कैसे बंद है?
- 30. डिकनेक्टेड डुप्लेक्स मतदान क्लाइंट का पता लगाने के लिए
यह विधि मैक या लिनक्स पर फ़ायरफ़ॉक्स ब्राउज़र के साथ काम नहीं कर रही है। – hypervisor666
बदसूरत चेतावनी! इसके बजाय कंसोल और console.log का उपयोग करें! , वैसे भी अच्छा जवाब है, लेकिन "// अधिकांश ब्राउज़रों" का ब्राउज़र समर्थन क्या है - या बेहतर IEwhatnumber + इसका समर्थन कर रहा है? –
क्या यह छोटा संस्करण पर्याप्त है? 'var scrollTop = pageYOffset || (document.documentElement.clientHeight? document.documentElement.scrollTop: document.body.scrollTop); ' – Roman