2011-01-12 16 views
26

मैं एक बहुत ही सरल वेब पेज (केवल HTML) डिज़ाइन कर रहा हूं, केवल "फीचर" जिसे मैं कार्यान्वित करना चाहता हूं वह है जब उपयोगकर्ता पृष्ठ को स्क्रॉल करता है, तो क्या किसी भी घटना को "ईवेंट" कैप्चर करने का कोई तरीका है?"स्क्रॉल डाउन" ईवेंट कैप्चर करना?

उत्तर

16
बस संपूर्णता के लिए

, वहाँ एक और जे एस रूपरेखा (Mootools)

window.addEvent('scroll',function(e) { 
    //do stuff 
}); 
+1

का उपयोग करने का सबसे अच्छा तरीका है 'window.addEventListener (" स्क्रॉल ", फ़ंक्शन (ई) {...}) का उपयोग नहीं कर रहा;'? अतिरिक्त 8 अक्षरों के कारण? –

+1

क्योंकि इस तरह से (mootools 'रास्ता) आप समर्थन (एड) भी आईई <9 (संलग्नक सामग्री) ... – stecb

+0

तो यह 'विंडो' के 'प्रोटोटाइप' को संशोधित कर रहा है? –

22

आप इसे केवल HTML के साथ नहीं कर सकते हैं, आपको जावास्क्रिप्ट का उपयोग करने की आवश्यकता होगी। मैं jQuery का उपयोग करना चाहिये, तो अपने समाधान इस तरह दिख सकता:

$(document).ready(function() { 
    $(window).scroll(function() { 
     // do whatever you need here. 
    }); 
}); 

आप नहीं चाहते या jQuery उपयोग करने में असमर्थ हैं, तो आप onscroll समाधान एंथनी द्वारा पोस्ट की गई उपयोग कर सकते हैं।

+0

मुझे लगता है कि वह स्क्रॉल करने के लिए केवल नीचे स्क्रॉल करने की तलाश में है। केवल स्क्रॉल के लिए कुछ भी है। –

37

आप jQuery (जो आप एक बहुत ही सरल HTML पृष्ठ के लिए ऐसा नहीं कर सकता है) का उपयोग नहीं करना चाहते हैं, तो आप इस का उपयोग करते हुए नियमित रूप से जावास्क्रिप्ट को पूरा कर सकते हैं:

<script> 
function scrollFunction() { 
    // do your stuff here; 
} 

window.onscroll = scrollFunction; 
</script> 

आपने कहा है कि आप कुछ करना चाहता था जब वे नीचे पृष्ठ को स्क्रॉल करते हैं - ऑनस्क्रॉल ईवेंट x- या y-axis में किसी भी दिशा में स्क्रॉलिंग को बंद कर देता है, इसलिए आपके फ़ंक्शन को स्क्रॉल करने पर कभी भी कॉल किया जाएगा।

यदि आप वाकई पृष्ठ को स्क्रॉल करते समय केवल अपना कोड चलाने के लिए चाहते हैं, तो आपको ऑनस्कोल कॉल होने पर तुलना करने के लिए पिछली स्क्रॉल स्थिति को संरक्षित करने की आवश्यकता होगी।

+3

'onscroll' की बजाय 'attachEvent' (IE) और' addEventListener' (बाकी सब कुछ) का उपयोग करना चाहिए। – crush

+0

@ क्रश, ऑनस्क्रॉल के बजाय attachEvent और addEventListener का उपयोग क्यों करें? – Pacerier

+1

@Pacerier ठीक है, मुझे इस टिप्पणी पर दोबारा गौर करें क्योंकि यह भ्रामक है, और मैंने प्राप्त दोषपूर्ण जानकारी के आधार पर और इंटरनेट के आसपास प्रचारित किया जा रहा है। [डब्ल्यू 3 सी एचटीएमएल 5 विनिर्देश] के अनुसार (http://www.w3.org/TR/html5/webappapis.html#event-handlers-on-elements--document-objects ,-and-window-objects), वहां है 'ऑनस्कोल' का उपयोग करने में कुछ भी गलत नहीं है। यह ध्यान रखना महत्वपूर्ण है कि 'ऑनस्कोल' विशेष रूप से, [HTML4 विनिर्देश] (http://www.w3.org/TR/html4/interact/scripts.html#h-18.2.3) में मौजूद नहीं था। – crush

11

एक बेहतर तरीका स्क्रॉल ईवेंट के लिए, लेकिन यह भी दिशा नीचे की तरह स्क्रॉल के लिए न केवल जांच करने के लिए है का उपयोग करते हुए एक अन्य समाधान है,

$(window).bind('mousewheel', function(event) { 
if (event.originalEvent.wheelDelta >= 0) { 
    console.log('Scroll up'); 
} 
else { 
    console.log('Scroll down'); 
} 
}); 
+2

यह सही जवाब होना चाहिए। –

+0

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

+0

@hydeA विभिन्न डिवाइस अलग-अलग प्रतिक्रिया करते हैं। इसके लिए आपको हथौड़ा या कुछ समान प्लगइन का उपयोग करना पड़ सकता है। अन्यथा मुझे लगता है कि इसका उत्तर यहां दिया गया है http://stackoverflow.com/questions/2863547/javascript-scroll-event-for-iphone-ipad –

0

यह मेरे लिए काम करता है।

var previousPosition 

$(window).scroll(function(){ 
    var currentScrollPosition=$(window).scrollTop() + $(window).height() 
    if (currentScrollPosition>previousScrollPosition) { 
    console.log('down') 
    }else if(currentScrollPosition<previousScrollPosition){ 
    console.log('up') 
    } 
    previousScrollPosition=currentScrollPosition 
}); 
संबंधित मुद्दे