2009-07-23 4 views
14

तो मैं एक पृष्ठ पर काम करने के लिए कुछ स्क्रॉलिंग कार्यक्षमता प्राप्त करने की कोशिश कर रहा हूं। भाग्य नहीं लेने के बाद, मैं अपने पृष्ठ पर window.scrollTo(0, 800); को छूने का फैसला करता हूं कि यह देखने के लिए कि क्या मुझे कोई स्क्रॉलिंग हो सकती है। कुछ नहीं होता है। मेरे पास एक accordion है जो विस्तार करता है और फिर मैं इसमें एक विशिष्ट तत्व को स्क्रॉल करना चाहता हूं। लेकिन अभी के लिए मुझे बस चीज़ स्क्रॉल देखने में खुशी होगी। कोई भी इसमें भाग लेता है?जावास्क्रिप्ट स्क्रॉल करने के लिए विधि कुछ भी नहीं करता है?

धन्यवाद!

+0

मुझे ध्यान रखना चाहिए कि मैंने स्क्रॉल करने की कोशिश की है JQuery प्लगइन बिना किसी किस्मत के। $ .scrollTo (0800); – Nick

+3

मेरे पता बार में फ़ायरफ़ॉक्स में मैंने बस जावास्क्रिप्ट डाला: window.scrollTo (0, 800); और यह काम करना प्रतीत होता था। – Davis

+0

ठीक है, ए। इसे विभिन्न ब्राउज़रों में आज़माएं, देखें कि यह किसी भी में काम करता है या नहीं। ख। document.body.scrollTo जैसी कुछ कोशिश करें। सी। याद रखें कि जावास्क्रिप्ट केस संवेदनशील है। सुनिश्चित नहीं है कि उनमें से कोई भी मदद करेगा, लेकिन आप कोशिश कर सकते हैं। –

उत्तर

14

मैं jQuery विधि एनिमेट() का उपयोग करके इस समस्या को हल करने में सक्षम था।

$('#content').animate({ scrollTop: elementOffset }, 200); 

चयनकर्ता आईडी = "सामग्री" के साथ div हो रही है: यहाँ कार्यान्वयन मैं साथ चला गया का एक उदाहरण है। मैं इसके बाद scrollTop के साथ एक विकल्प के रूप में एनिमेट विधि लागू कर रहा हूं। दूसरा पैरामीटर एनीमेशन अवधि के लिए मिलीसेकंड में समय है। मैं उम्मीद करता हूं कि इससे किसी की मदद होगी।

+1

मैंने अन्य उत्तरों की कोशिश की। यह एकमात्र ऐसा है जो मेरे लिए भी काम करता है। अंतर है कि मैंने '$ ('body') का उपयोग किया है। एनिमेट ({scrollTop: top}, 0); 'जहां' शीर्ष 'चर है जिसमें पूर्णांक में वाई-समन्वय होता है। –

-2

अच्छी तरह से यह स्पष्ट नहीं होगा कि आपका पृष्ठ कम से कम नहीं है (viewport.height - 800) लंबा। क्या आप स्क्रॉल बार देखते हैं? अन्यथा आप कुछ और गलत कर रहे हैं।

-1

यह कोड लें: http://www.java2s.com/Code/JavaScriptReference/Javascript-Methods/scrollToExample.htm और एक HTML फ़ाइल के रूप में सहेजें। ध्यान दें कि ब्राउज़र के व्यूपोर्ट की तुलना में यह कितना बड़ा div बड़ा कोड है। स्क्रॉलिंग के लिए भी आपको काम करने के लिए शायद अपने पृष्ठ के निचले हिस्से में एक सामग्री जोड़ने की आवश्यकता है।

0

सबसे पहले, क्या आप स्क्रॉल करने के लिए भी काफी बड़ा पृष्ठ हैं (भले ही यह एक आईफ्रेम में है)? यदि नहीं, या आप निश्चित नहीं हैं, तो एक विशाल div बनाओ, फिर नीचे कुछ डालें। उस पर स्क्रॉल करने का प्रयास करें।

अगला, यदि आपके आईफ़्रेम में स्क्रॉलिंग है, तो अपने कोड को उसी स्रोत पर फ्रेम स्रोत के रूप में रखें। इस तरह आपको दूसरी विंडो में दस्तावेज़ या विशिष्ट तत्व प्राप्त करने की चिंता करने की आवश्यकता नहीं है, जो मुश्किल हो सकता है। ओह हाँ, क्या आप वाकई उस हिस्से को सही तरीके से प्राप्त कर रहे हैं? फायरबग के साथ कदम उठाने से आप उसकी मदद कर सकते हैं।

अंत में, स्क्रॉलिंग होने के कारण होने वाली रेखा पर ब्रेकपॉइंट (फ़ायरबग का उपयोग करके) डालें। क्या यह उस ब्रेकपॉइंट पर हिट करता है? यदि नहीं, तो आपका कोड निष्पादित नहीं हो रहा है, और स्क्रॉलिंग आपकी समस्या नहीं है।

(मैं इस उत्तर दिया, your earlier question से संदर्भ समर्थन के साथ।)

संपादित करें:

स्क्रॉल खिड़की के पास खिड़की किया जाता है। यदि आप ऐसे फ्रेम में हैं जो स्क्रॉल नहीं कर सकता है, तो कुछ भी स्क्रॉल नहीं करेगा। यदि आप उस तत्व को फ्रेम में स्क्रॉल करने के लिए चाहते हैं, तो उस तत्व के ऑफसेट को अपनी वर्तमान विंडो में प्राप्त करें और इसे शामिल फ्रेम के ऑफसेट में जोड़ें। यह ट्रिक काम आना चाहिए।

+0

हां, पृष्ठ में पर्याप्त ऊंचाई है। मैं स्क्रॉल बार देख सकता हूं। मुझे संदेह है कि समस्या को इस पृष्ठ की रचना के साथ करना है। चूंकि यह साइट मास्टरपेज के दिनों से पहले बनाई गई थी, मेरे पास एक मुख्य पृष्ठ है जिसमें 2 फ्रेम हैं। पहला हेडर एनएवी बार है और दूसरा एक सामग्री क्षेत्र है। मुझे लगता है कि यही कारण है कि स्क्रॉल करने के लिए विधि काम नहीं कर रहा है। – Nick

+0

हाँ, खिड़की से स्क्रॉलिंग विंडो खिड़की है। अगर आप ऐसे फ्रेम में हैं जो स्क्रॉल नहीं कर सकता है, तो कुछ भी स्क्रॉल नहीं करेगा। और आप यह पता लगाने की कोशिश कर पागल हो जाएंगे कि क्या गलत है। ओह ... – geowa4

3

मैं आज इस एक ही समस्या हो रही थी और उसके बाद मुझे पता चला कि जब मैं बाहर ले ऑटो doctype ब्लॉक उत्पन्न:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 

window.scrollTo (0800) शुरू कर दिया ExtJs scrollTo के साथ काम कर रहे() फ़ंक्शन मैं मूल रूप से उपयोग करने की कोशिश कर रहा था। मैंने ब्लॉक को वापस अंदर रखा और यह काम करना बंद कर दिया। मुझे नहीं पता कि यह वही है जो आप चल रहे थे (2 साल पहले) लेकिन उम्मीद है कि यह किसी और को एक ही समस्या में भागने में मदद करेगा।

21

आप कुछ इस तरह है:

html, body { height: 100%; overflow:auto; } 

दोनों के शरीर और एचटीएमएल 100% की ऊंचाई परिभाषा है और भी सक्षम स्क्रॉल, तो window.scrollTo (और सभी व्युत्पन्न स्क्रॉल तंत्र) काम नहीं करते, के बावजूद एक स्क्रॉलबार प्रदर्शित किया जा रहा है (जिसे उपयोगकर्ता द्वारा उपयोग किया जा सकता है), जब सामग्री उस 100% शरीर की ऊंचाई से अधिक हो जाती है। ऐसा इसलिए है क्योंकि आप जिस स्क्रॉलबार को देखते हैं वह विंडो की नहीं है, बल्कि शरीर की है।

समाधान:

html { height: 100%; overflow:auto; } 
body { height: 100%; } 
5

मैं एक setTimout उपयोग करने के साथ यह समस्या सुलझा नहीं। मैं angularjs का उपयोग कर रहा था, लेकिन शायद यह वेनिला जेएस में भी मदद कर सकता है।

 setTimeout(function() { 
      window.scrollTo(0, 300); 
     },2); 
+0

यह सबसे अच्छा जवाब होना चाहिए। धन्यवाद। – JulianSoto

1

जांच यदि आपका टैग जहाँ आपके स्क्रॉल एक सीएसएस अतिप्रवाह मिल प्लग किया गया है [/ - एक्स-y]: छिपा हुआ। यह बग

0

कभी-कभी यह केवल सीएसएस मुद्दा नहीं था, मेरे लिए यह ब्राउज़र अपराधी था। मुझे इसे इस कोड से हल करना पड़ा।

if ('scrollRestoration' in window.history) { 
    window.history.scrollRestoration = 'manual' 
} 

यह डेवलपर को स्क्रॉल परिवर्तनों का स्वामित्व लेने देता है। इसके बारे में और पढ़ें here

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