क्या एक पॉपस्टेट घटना होने पर दस्तावेज़ को स्क्रॉल करने के डिफ़ॉल्ट व्यवहार को रोकना संभव है?
हमारी साइट jQuery के एनिमेटेड स्क्रॉलिंग और History.js का उपयोग करती है, और राज्य के परिवर्तनों को उपयोगकर्ता को पेज के विभिन्न क्षेत्रों में पुशस्टेट या पॉपस्टेट के माध्यम से स्क्रॉल करना चाहिए। मुसीबत यह है कि ब्राउज़र जब एक पॉपस्टैट घटना होती है तो पिछली स्थिति की स्क्रॉल स्थिति को स्वचालित रूप से पुनर्स्थापित करता है।
मैंने एक कंटेनर तत्व का उपयोग करके दस्तावेज़ की 100% चौड़ाई और ऊंचाई पर सेट करने की कोशिश की है और उस कंटेनर के अंदर की सामग्री को स्क्रॉल किया है। समस्या यह है कि मैंने पाया है कि यह दस्तावेज़ को स्क्रॉल करने जितना आसान नहीं है; खासकर अगर बॉक्स-शैडो और ग्रेडिएंट जैसे बहुत सारे सीएसएस 3 का उपयोग कर रहे हैं।
मैंने दस्तावेज़ की स्क्रॉल स्थिति को संग्रहीत करने की कोशिश भी की है, जब उपयोगकर्ता ने स्क्रॉल किया है और ब्राउज़र को पृष्ठ (पॉपस्टेट पर) स्क्रॉल करने के बाद इसे पुनर्स्थापित किया है। फ़ायरफ़ॉक्स 12 में यह ठीक काम करता है लेकिन क्रोम 19 में पेज को स्क्रॉल करने और पुनर्स्थापित करने के कारण एक झिलमिलाहट होती है। मेरा मानना है कि यह स्क्रॉल और स्क्रॉल इवेंट के बीच देरी के साथ करना है (जहां स्क्रॉल स्थिति बहाल हो गई है)।
फ़ायरफ़ॉक्स पृष्ठ को स्क्रॉल करता है (और स्क्रॉल घटना को आग लगाता है) पहले पॉपस्टैट फायर और क्रोम आग को पहले पॉपस्टैट करता है फिर दस्तावेज़ को स्क्रॉल करता है।
मैंने जिन साइटों को देखा है, वे सभी इतिहास एपीआई का उपयोग करते हैं या तो ऊपर दिए गए समाधानों का उपयोग करते हैं या जब उपयोगकर्ता वापस जाता है तो स्क्रॉल स्थिति परिवर्तन को अनदेखा करता है (जैसे GitHub)।
क्या यह संभव है कि दस्तावेज़ को पॉपस्टेट घटनाओं पर स्क्रॉल किया जाए?
document.body.clientHeight
लेकिन मैंने इसे सभी ब्राउज़रों में काम करते नहीं देखा।