2013-07-16 10 views
8

मैंने पृष्ठ का शरीर 200% लंबा बना दिया है ताकि यह दो बार स्क्रीन पर फिट हो। जावास्क्रिप्ट का उपयोग करके मैं इसे स्क्रॉल करते समय शीर्ष या नीचे स्क्रॉलिंग कर रहा हूं। इसके लिए, मुझे किसी भी ब्राउज़र या स्क्रीन आकार पर पृष्ठ के सबसे निचले स्क्रॉल बिंदु को खोजने की आवश्यकता है ताकि जब वहां पहुंच जाए तो यह बंद हो जाता है।किसी पृष्ठ की अधिकतम स्क्रॉल स्थिति

कोई JQuery कृपया।
धन्यवाद।

मेरे कोड: (यह अभी भी एक साथ रखा जा रहा है तो काम का एक सा की जरूरत है)

function getScrollXY() { 
    var x = 0, y = 0; 
    if(typeof(window.pageYOffset) == 'number') { 
     // Netscape 
     x = window.pageXOffset; 
     y = window.pageYOffset; 
    } else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) { 
     // DOM 
     x = document.body.scrollLeft; 
     y = document.body.scrollTop; 
    } else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { 
     // IE6 standards compliant mode 
     x = document.documentElement.scrollLeft; 
     y = document.documentElement.scrollTop; 
    } 
    return [x, y]; 
} 

function scrollup() { 
    if (xy[1] > 0) { 
     window.scrollBy(0,-100); 
     setTimeout(scrollup,200); 
    } else { 
     null; 
    } 
} 

function scrolldown() { 
    if (xy[1] <) { 
     window.scrollBy(0,100); 
     setTimeout(scrolldown,200); 
    } else { 
     null; 
    } 
} 

function dothescroll() { 
    var xy = getScrollXY(); 
    var y = xy[1]; 
    setTimeout(function(){ 
     if (xy[1] > y) { 
      scrollup(); 
     } else { 
      scrolldown(); 
     } 
    },200); 
} 

उत्तर

18

इस पार ब्राउज़र संगत संस्करण है:

var limit = Math.max(document.body.scrollHeight, document.body.offsetHeight, 
        document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight); 
+3

पर एक अलग उत्तर के रूप में पोस्ट किया है, यदि आप विंडो.इनर से सीमित हैं, तो अधिकतम स्क्रॉल स्थिति.एक्स –

+7

अब तक सत्य नहीं है: var limit = Math.max (document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) - window.innerHeight; – Jordan

6
var limit = document.body.offsetHeight - window.innerHeight; 
// document.body.offsetHeight = computed height of the <body> 
// window.innerHeight = available vertical space in the window 

तुलना करें xy[1] < limit

नोट: आप अंतर से मूल्य में वृद्धि करने की आवश्यकता हो सकती और/या शरीर के पैडिंग। आप offsetHeight के बजाय clientHeight का उपयोग करने का भी प्रयास कर सकते हैं।

+0

यह सही है :) x –

+0

बिल्कुल सही नहीं है, यह क्रॉस ब्राउज़र संगत नहीं था। मैं इसे इसके तहत पोस्ट करूंगा: –

+0

@Neil - मुझे आपकी आखिरी टिप्पणी नहीं मिली। कृपया जिन मुद्दों को आपने पाया है उन्हें साझा करें। – vsync

1

window.scrollTo (0, document.body.scrollHeight);

इस काम करेंगे ..

+0

कृपया इस कारण पर विस्तार करें कि यह लाइन क्यों काम नहीं करेगी और इसे ठीक करने का एक तरीका सुझाएगी – tutuDajuju

0

हालांकि यह किसी भी विनिर्देश का हिस्सा नहीं है, तो आप window.scrollMaxY की कोशिश कर सकते।

अधिकतम पिक्सेल लौटाता है जो दस्तावेज़ को लंबवत स्क्रॉल किया जा सकता है। https://developer.mozilla.org/docs/Web/API/Window/scrollMaxY


निवर्तन अनुपलब्ध है, तो:

var scrollMaxY = window.scrollMaxY || (document.documentElement.scrollHeight - document.documentElement.clientHeight) 

ध्यान दें, documentElement हमेशा स्क्रॉलिंग तत्व (कुछ ब्राउज़रों बजाय body का उपयोग करें) नहीं है। समाधान नई scrollingElement संपत्ति है, जो उस तत्व का संदर्भ देता है जो दस्तावेज़ पर स्क्रॉल करता है। यह निर्दिष्ट है, लेकिन अभी भी एक कामकाजी मसौदा है।

संबंधित मुद्दे