2011-10-19 7 views
7

मैं अगर पेज स्क्रॉल किया है जाँच करना चाहते हैं में 0 रिटर्न के बाद यह लोड हो जाए, और मैं इस कोड का उपयोग कर रहा:scrollTop() क्रोम

$(document).ready(function(){ 
    alert($(window).scrollTop()); 
}); 

यह फ़ायरफ़ॉक्स में अच्छी तरह से काम लेकिन allways क्रोम में 0 देता है। ऐसा क्यों है?

+0

स्थिति क्या है? क्या आप यह देखने के लिए जांच कर रहे हैं कि आगंतुक # पेज टैग के साथ आपके पृष्ठ पर आया था या नहीं? या क्या आप यह देखने के लिए जांच कर रहे हैं कि दस्तावेज़ लोड होने से पहले विज़िटर स्क्रॉल किया गया था या नहीं? अथवा दोनों? –

+1

मैं तत्वों पर एक एनीमेशन चला रहा हूं जो सिर्फ दृश्य में स्क्रॉल किया गया है। लेकिन अगर आप पेज को स्क्रॉल करते हैं और रीफ्रेश हिट करते हैं। पुनः लोड किए गए पृष्ठ को पिछले स्क्रॉल पॉइंट (प्री रीफ्रेश) पर स्वचालित रूप से स्क्रॉल किया गया है, इसलिए मैं यह निर्धारित करने के लिए विंडो की स्क्रॉल स्थिति जानना चाहता हूं कि पृष्ठ पर कौन से तत्व दृश्य में स्क्रॉल किए गए हैं और एनीमेशन –

उत्तर

2

$(window).scrollTop() विंडो स्क्रॉल करने योग्य नहीं होने पर 0 वापस आ जाएगी।

0

किसी पृष्ठ में निम्न कोड का प्रयास करें जिसमें पृष्ठ के नीचे कुछ टेक्स्ट और एक लिंक है। पेज के एक स्क्रॉल करने के लिए जब तक आप मेरे बटन

$(document).ready(function() { 
     alert($(window).scrollTop()); // first load if you did not scroll = 0 
     $("#button").click(function() { alert($(window).scrollTop()); }); 
     // hitting the button that is located on bottom of page 
     // - i had to scroll the page = xxx (68 in may case) 
    }); 

क्योंकि पेज स्क्रॉल नहीं है यह अपने मामले 0 प्राप्त करने के लिए सामान्य है, के बीच ऑफसेट देख सकते हैं क्रम में पर्याप्त पाठ या रिक्त लाइनों के लिए याद रखें आपकी स्थिति और पृष्ठ का शीर्ष 0.

मैंने क्रोम, एफएफ 6, आईई 9 में कोशिश की। मुझे आशा है कि मैं सहायक था।

+1

प्राप्त करने के लिए #button पर क्लिक करें .scrollTop () मुद्दा नहीं है .. यदि आप पृष्ठ को स्क्रॉल करते हैं और रीफ्रेश हिट करते हैं। पृष्ठ उस बिंदु से लोड होगा जो आपने स्क्रॉल किया था (प्री रीफ्रेश करें) .. और वह स्थिति है जिसे मैं जानना चाहता हूं। और यदि आप ऐसा करते हैं तो एफएफ में कोरक वैल्यू आउटपुट होगा। क्रोम 14.0 में यह 0 देता है। –

4

असल में फ़ायरफ़ॉक्स एकमात्र ब्राउज़र है जो $ (विंडो) .scrollTop() domReady या window.onload पर 0 वापस नहीं करता है। क्रोम, सफारी और IE सभी लौट 0. केवल सुरक्षित तरीका है, ऊपर एक और उत्तर में उल्लिखित, नीचे के रूप में खिड़की के पुस्तक घटना पर एक ईवेंट हैंडलर स्थापित करने के लिए domReady पर स्क्रॉलबार की सही स्थिति प्राप्त करने के लिए:

$(document).ready(function(){ 
    $(window).scroll(function() { 
     console.log($(window).scrollTop()); 
     $(window).unbind('scroll'); 
    }); 
}); 
+0

मुझे वास्तव में समझ में नहीं आता कि लोगों ने आपका जवाब क्यों कम किया। यह वास्तव में काम करता है। इसके अलावा, मैंने देखा कि क्रोम स्क्रॉल घटना को दो बार आग लगा देगा। सबसे पहले सामान्य पृष्ठ लोड पर और दूसरी बार यदि पिछली स्थिति पर स्क्रॉल करना उपयोगकर्ता था (उदाहरण के लिए पृष्ठ को फिर से लोड करने के लिए F5 को मारने के बाद)। – Fleshgrinder

2

एक बार डोम लोड होने के बाद क्रोम प्री-रीफ्रेश स्क्रॉल स्थिति को पुनर्स्थापित करता है। तो, तैयार घटना के बजाय स्क्रॉल ईवेंट पर scrollTop प्राप्त करना काम करेगा।

2

मैं भी समस्या यह है कि scrollTop() Chrome में हमेशा 0 लौटा था, कि क्या मैं window पर इसका इस्तेमाल किया, document पर या 'html,body' पर। मैं अंत में पता चला कि सीएसएस समस्या थी:

html, body { 
    height: 100%; 
    overflow-x: hidden; 
} 

वास्तव में, मैं वास्तव में नहीं जानता कि क्यों, क्योंकि आप इस कोड के कुछ हिस्सों को हटा सकते हैं और उसे फिर से काम करता है। अजीब लेकिन समस्या हल हो;)

+0

आपको बहुत बहुत धन्यवाद! यह वास्तव में अजीब है! सफारी पर काम किया लेकिन क्रोम पर नहीं, मैंने इसे अपने सीएसएस में जोड़ा, दोनों ब्राउज़र दोनों पर काम करता है! – bbnn

0

मैं एक ही समस्या थी लेकिन दस्तावेज़ घोषणा जोड़कर तय हो गया:

<!DOCTYPE html>